Почему запускаются функции mjit? - PullRequest
3 голосов
/ 01 июля 2019

Я занимаюсь исследованиями в ruby ​​интерпретаторе и mJIT.И, как первый шаг, я хотел бы понять поведение обоих.Таким образом, я просто запустил очень простую программу ruby ​​без команды --jit puts ("hello world!") и получил трассировку ее выполнения.Затем я обнаружил, что даже без mJIT некоторые функции mJIT вызываются, например, mjit_add_class_serial, mjit_remove_class_serial, mjit_mark, mjit_gc_finish_hook, mjit_free_iseq и mjit_finish.

И я хотел бы понять, почему это так.Я предполагаю, что интерпретатор и mJIT разделяют некоторые из этих кодов, но не уверены на 100%.В частности, в описании mjit_finish кратко говорится, что оно предназначено для завершения любой операции, выполняемой компилятором mJIT.В таком случае, почему эта функция вызывается при выполнении кода только для интерпретатора?

Если у кого-то есть идея относительно моего вопроса, любая рекомендация будет очень признательна.

Спасибо.

Это для ruby ​​версии 2.6.2.И я просмотрел исходный код, а также комментарии, объясняющие каждый код, но они не очень понятны.

...