@@ -4618,6 +4618,27 @@ ZEND_EXT_API void zend_jit_protect(void)
46184618#endif
46194619}
46204620
4621+ static void zend_jit_init_handlers (void )
4622+ {
4623+ if (zend_jit_vm_kind == ZEND_VM_KIND_HYBRID ) {
4624+ zend_jit_runtime_jit_handler = dasm_labels [zend_lbhybrid_runtime_jit ];
4625+ zend_jit_profile_jit_handler = dasm_labels [zend_lbhybrid_profile_jit ];
4626+ zend_jit_func_hot_counter_handler = dasm_labels [zend_lbhybrid_func_hot_counter ];
4627+ zend_jit_loop_hot_counter_handler = dasm_labels [zend_lbhybrid_loop_hot_counter ];
4628+ zend_jit_func_trace_counter_handler = dasm_labels [zend_lbhybrid_func_trace_counter ];
4629+ zend_jit_ret_trace_counter_handler = dasm_labels [zend_lbhybrid_ret_trace_counter ];
4630+ zend_jit_loop_trace_counter_handler = dasm_labels [zend_lbhybrid_loop_trace_counter ];
4631+ } else {
4632+ zend_jit_runtime_jit_handler = (const void * )zend_runtime_jit ;
4633+ zend_jit_profile_jit_handler = (const void * )zend_jit_profile_helper ;
4634+ zend_jit_func_hot_counter_handler = (const void * )zend_jit_func_counter_helper ;
4635+ zend_jit_loop_hot_counter_handler = (const void * )zend_jit_loop_counter_helper ;
4636+ zend_jit_func_trace_counter_handler = (const void * )zend_jit_func_trace_helper ;
4637+ zend_jit_ret_trace_counter_handler = (const void * )zend_jit_ret_trace_helper ;
4638+ zend_jit_loop_trace_counter_handler = (const void * )zend_jit_loop_trace_helper ;
4639+ }
4640+ }
4641+
46214642static int zend_jit_make_stubs (void )
46224643{
46234644 dasm_State * dasm_state = NULL ;
@@ -4637,23 +4658,7 @@ static int zend_jit_make_stubs(void)
46374658 }
46384659 }
46394660
4640- if (zend_jit_vm_kind == ZEND_VM_KIND_HYBRID ) {
4641- zend_jit_runtime_jit_handler = dasm_labels [zend_lbhybrid_runtime_jit ];
4642- zend_jit_profile_jit_handler = dasm_labels [zend_lbhybrid_profile_jit ];
4643- zend_jit_func_hot_counter_handler = dasm_labels [zend_lbhybrid_func_hot_counter ];
4644- zend_jit_loop_hot_counter_handler = dasm_labels [zend_lbhybrid_loop_hot_counter ];
4645- zend_jit_func_trace_counter_handler = dasm_labels [zend_lbhybrid_func_trace_counter ];
4646- zend_jit_ret_trace_counter_handler = dasm_labels [zend_lbhybrid_ret_trace_counter ];
4647- zend_jit_loop_trace_counter_handler = dasm_labels [zend_lbhybrid_loop_trace_counter ];
4648- } else {
4649- zend_jit_runtime_jit_handler = (const void * )zend_runtime_jit ;
4650- zend_jit_profile_jit_handler = (const void * )zend_jit_profile_helper ;
4651- zend_jit_func_hot_counter_handler = (const void * )zend_jit_func_counter_helper ;
4652- zend_jit_loop_hot_counter_handler = (const void * )zend_jit_loop_counter_helper ;
4653- zend_jit_func_trace_counter_handler = (const void * )zend_jit_func_trace_helper ;
4654- zend_jit_ret_trace_counter_handler = (const void * )zend_jit_ret_trace_helper ;
4655- zend_jit_loop_trace_counter_handler = (const void * )zend_jit_loop_trace_helper ;
4656- }
4661+ zend_jit_init_handlers ();
46574662
46584663 dasm_free (& dasm_state );
46594664 return 1 ;
@@ -4928,6 +4933,7 @@ ZEND_EXT_API int zend_jit_startup(void *buf, size_t size, bool reattached)
49284933#if _WIN32
49294934 /* restore global labels */
49304935 memcpy (dasm_labels , dasm_buf , sizeof (void * ) * zend_lb_MAX );
4936+ zend_jit_init_handlers ();
49314937#endif
49324938 }
49334939
0 commit comments