diff options
Diffstat (limited to 'cont.c')
-rw-r--r-- | cont.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -1097,6 +1097,15 @@ cont_save_thread(rb_context_t *cont, rb_thread_t *th) } static void +cont_init_mjit_cont(rb_context_t *cont) +{ + VM_ASSERT(cont->mjit_cont == NULL); + if (mjit_enabled) { + cont->mjit_cont = mjit_cont_new(&(cont->saved_ec)); + } +} + +static void cont_init(rb_context_t *cont, rb_thread_t *th) { /* save thread context */ @@ -1105,9 +1114,7 @@ cont_init(rb_context_t *cont, rb_thread_t *th) cont->saved_ec.local_storage = NULL; cont->saved_ec.local_storage_recursive_hash = Qnil; cont->saved_ec.local_storage_recursive_hash_for_trace = Qnil; - if (mjit_enabled) { - cont->mjit_cont = mjit_cont_new(&cont->saved_ec); - } + cont_init_mjit_cont(cont); } static rb_context_t * @@ -1124,6 +1131,14 @@ cont_new(VALUE klass) return cont; } +void +rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber) +{ + // Currently this function is meant for root_fiber. Others go through cont_new. + // XXX: Is this mjit_cont `mjit_cont_free`d? + cont_init_mjit_cont(&fiber->cont); +} + #if 0 void show_vm_stack(const rb_execution_context_t *ec) |