Bitcode mixed mode work. (#12312)
commita19f9d869dd151bc394fda478533d22ed6674a9e
authorZoltan Varga <vargaz@gmail.com>
Wed, 9 Jan 2019 14:23:58 +0000 (9 09:23 -0500)
committerBernhard Urban <bernhard.urban@xamarin.com>
Wed, 9 Jan 2019 14:23:58 +0000 (9 15:23 +0100)
treef5e5ebad531da04441fa6816d01150d81a8056f7
parent1be89d440c831e0490d7758874d5f8a058cc52e2
Bitcode mixed mode work. (#12312)

* [llvmonly] Avoid generating/loading trampolines in llvmonly+interp mode.

Add a new execution mode MONO_AOT_MODE_LLVMONLY_INTERP and make --llvmonly-interp use that. INTERP_LLVMONLY defaults to the interpreter, while LLVMONLY_INTERP defaults to aot.

* [llvmonly] Save whenever a method has a gsharedvt variable signature into the aot image and use that instead of looking up its MonoJitInfo, which is a perf problem since its done for all methods.

* Add a case to append_mangled_wrapper_subtype ().

* [llvmonly] Move initialization of delegate->method_ptr to mini_init_delegate (), pass a handle to the callback.

* [llvmonly] Allow --regression to work in mixed mode.

* [llvmonly] Set param names for gsharedvt in/out wrappers.

* [llvmonly] Use the dedup mangler for setting method names for gsharedvt in/out wrappers, shorten the names a bit.

* Revert "[llvmonly] Allow --regression to work in mixed mode."

This reverts commit d7838c1ce7dc0e3d7bfc3c7f01214224f561db90.

* Fix c++-isms.
17 files changed:
mono/metadata/icall.c
mono/metadata/object-internals.h
mono/metadata/object.c
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/aot-runtime.h
mono/mini/driver.c
mono/mini/ee.h
mono/mini/exceptions-amd64.c
mono/mini/interp-stubs.c
mono/mini/interp/interp.c
mono/mini/jit.h
mono/mini/mini-exceptions.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-runtime.c
mono/mini/mini-trampolines.c
mono/mini/mini.h