我正在研究ruby解释器和mJIT。
并且,作为第一步,我想了解两者的行为。因此,我只运行了一个非常简单的ruby程序而没有--jit命令puts ("hello world!")
并获得了其执行跟踪。然后,我发现一件事,即使没有启用mJIT,也会调用某些mJIT函数,例如mjit_add_class_serial
,mjit_remove_class_serial
,mjit_mark
,mjit_gc_finish_hook
,{{1} }和mjit_free_iseq
。
而且,我想了解为什么会这样。我的猜测是解释器和mJIT共享其中一些代码,但不能100%确定。特别地,mjit_finish
的描述简短地说是用于完成mJIT编译器正在执行的任何操作。在这种情况下,为什么在仅解释器的执行代码中调用此函数?
如果有人对我的问题有想法,任何建议将不胜感激。
谢谢。
这是针对Ruby 2.6.2版的。而且,我已经遍历了源代码以及解释每个代码的注释,但是它们并不十分清楚。