@@ -4618,6 +4618,27 @@ ZEND_EXT_API void zend_jit_protect(void)
4618
4618
#endif
4619
4619
}
4620
4620
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
+
4621
4642
static int zend_jit_make_stubs (void )
4622
4643
{
4623
4644
dasm_State * dasm_state = NULL ;
@@ -4637,23 +4658,7 @@ static int zend_jit_make_stubs(void)
4637
4658
}
4638
4659
}
4639
4660
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 ();
4657
4662
4658
4663
dasm_free (& dasm_state );
4659
4664
return 1 ;
@@ -4928,6 +4933,7 @@ ZEND_EXT_API int zend_jit_startup(void *buf, size_t size, bool reattached)
4928
4933
#if _WIN32
4929
4934
/* restore global labels */
4930
4935
memcpy (dasm_labels , dasm_buf , sizeof (void * ) * zend_lb_MAX );
4936
+ zend_jit_init_handlers ();
4931
4937
#endif
4932
4938
}
4933
4939
0 commit comments