[llvm] Define a separate symbol for the aot method info for every method. Pass this...
commit36c1034f4bc9379822b89ce8ccfbee6ecd6b92fe
authorZoltan Varga <vargaz@gmail.com>
Mon, 6 Apr 2020 22:14:27 +0000 (6 18:14 -0400)
committerGitHub <noreply@github.com>
Mon, 6 Apr 2020 22:14:27 +0000 (6 18:14 -0400)
treea03f923f6c691fdf6b324c4a7931996e933c1adc
parentc5149e31b4d7c24379c739bc718fab034ac1e5e6
[llvm] Define a separate symbol for the aot method info for every method. Pass this symbol to the init functions instead of the method index. (#19298)

* [llvm] Define a separate symbol for the aot method info for every method. Pass this symbol to the init functions instead of the
method index.

This removes a dependency the generated code has on the method index, hopefully allowing separate compilation etc. in the future.

* Put the method flags into a separate AOT table so they can be accessed without decoding the method info structure, which is not available to the runtime for LLVM methods.

* Make the LLVM methods set the init flag themselves. This will allow the init flag to be changed to a per-method scalar later to remove
a dependency on the method index.

Also rename init_icall_wrapper to init_func, it does much more than just calling the icall.
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/aot-runtime.h
mono/mini/llvmonly-runtime.c
mono/mini/llvmonly-runtime.h
mono/mini/mini-llvm.c
mono/mini/mini-llvm.h
mono/mini/mini-runtime.c
mono/mini/mini.c
mono/mini/mini.h