Почему запускаются функции mjit?

Я занимаюсь исследованиями в 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. И я просмотрел исходный код, а также комментарии, объясняющие каждый код, но они не очень понятны.

0 ответов

Другие вопросы по тегам