Mono里运行C#脚本41—编译MonoEmbed::gimme()调用的过程
前面已经分析了一下怎么嵌入内部调用的函数,如下文:
Mono里运行C#脚本34—内部函数调用的过程
https://mysoft.blog.csdn.net/article/details/145335991?spm=1001.2014.3001.5502
但是下面的代码编译时,怎么样样处理呢?
call string class MonoEmbed::gimme()
这行代码是在Main () 的第一行代码。
所以在编译这个函数时,就会对函数 MonoEmbed::gimme()进行编译。
也就是说在Main()函数进行JIT阶段,就会对函数 MonoEmbed::gimme()进行编译,但不会在此阶段生成它的JIT代码。
当Main函数进行JIT时遇到这行代码,就会在函数mono_method_to_ir里面处理。
由于这行指令是call指令,所以会在下面的代码进行处理:
case MONO_CEE_CALL:
case MONO_CEE_CALLVIRT: {
...
fsig = mono_method_signature_internal (cmethod);
...
当运行到这行代码时,就会查