Open
Conversation
Add flags to try to get mono cross to build wasm64 - this time --target=wasm64 is not recognised.
…need conditional)
…this (conditional, check which of these wasm64's can be removed)
…iterpreter stub function, set DISABLE_JITERPRETER for browser builds of BuildMonoCross
…o I've got a record of the change, will revert)
…itting so I've got a record of the change, will revert)" This reverts commit 3583d31.
This reverts commit d032b31.
Previously we would allow the assigned size of zero (which may indicate no match) to be used as void.
For testing bool sig mismatch issue, canvas initialization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
These changes allow us to use the MEMORY64 flag in emscripten in combination with the dotnet runtime, opening up the available address space to web applications.
Changes affect areas including marshalling and interpreted call handling. In particular, icalls need to specify whether pointer parameters are 4 or 8 byte. On x86/64 this is not required because both sizes are written to the same register. All permutations of 4 and 8 byte pointer parameters are now handled by the icall system in a new file
interp-icalls.c, split out from interp.c. This is probably not an ideal solution long term, but is functional.The Jiterpreter is hardcoded out in this branch, and no changes have been made to the jiterpreter code to support wasm64. Stub functions are provided to enable this branch to work. Similarly we use invariant globalization and remove the standard libicu, utilising stub methods instead.
We have a separate demo sample to show the address space limitation being overcome here: https://github.com/[vulkan101/Wasm64Demo](https://github.com/vulkan101/Wasm64Demo. This is a stripped down blazor application which simply allocates memory in chunks until it fails.
Test projects in the runtime which have been run successfully include:
To date, we have not run any of the low level wasm tests which require linux compilation.
The use of wasm64 is hardcoded in several places, and other changes include modification to allow the use of a local emscripten install, which must be 4.0.5 at present.
We got around an issue with runtime startup by modifying
dotnet.es6.lib.jsand using theUSE_CLOSURE_COMPILERflag, but as discussed at the time this is not ideal, and PRs such as this dotnet#119409 take a better approach.This PR targets the point at which the branch was taken from main to show the changes more clearly.