[wasm] Bitcode code generation improvements (#11413)
commitc0da2a5126514ab4136e537e2dea59670df5f0e2
authorZoltan Varga <vargaz@gmail.com>
Mon, 29 Oct 2018 19:06:01 +0000 (29 20:06 +0100)
committerGitHub <noreply@github.com>
Mon, 29 Oct 2018 19:06:01 +0000 (29 20:06 +0100)
treee61d46aa4c2c3116f5032da4c6c721a485e13be8
parent985be3e594fed42d2708daaef67fe6e34b409972
[wasm] Bitcode code generation improvements (#11413)

* [llvm] Rewrite the bitcode get_method () generated method to load the result from a table on wasm instead of a huge
switch statement.

This might be usable on other platforms in the future but having a table full of function pointers might lead to linking
problems.

* [llvm] Make direct calls to jit icalls without wrappers as well.

* [llvm] Export mono_llvm_clear_exception () with G_EXTERN_C, its called from llvm generated code.

* [wasm] Emit target layout/target triple into bitcode files.

* [aot] Allow the decoding of references to icall wrappers, so compiled code can reference them directly using a MONO_PATCH_INFO_METHOD.

* [llvm] Call icall wrappers directly from corlib code in llvmonly mode instead of going through the GOT.

* [llvm] Instance methods without got accesses don't need initialization in llvmonly mode.
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/mini-llvm.c
mono/mini/mini-runtime.c
mono/mini/mini-runtime.h
mono/mini/mini-wasm.c
mono/mini/mini-wasm.h
mono/mini/mini.h