@@ -3452,7 +3452,12 @@ static void zend_jit_cleanup_func_info(zend_op_array *op_array)
3452
3452
if (JIT_G (trigger ) == ZEND_JIT_ON_FIRST_EXEC ||
3453
3453
JIT_G (trigger ) == ZEND_JIT_ON_PROF_REQUEST ||
3454
3454
JIT_G (trigger ) == ZEND_JIT_ON_HOT_COUNTERS ) {
3455
- memset (func_info , 0 , sizeof (zend_func_info ));
3455
+ func_info -> num = 0 ;
3456
+ func_info -> flags &= ZEND_FUNC_JIT_ON_FIRST_EXEC
3457
+ | ZEND_FUNC_JIT_ON_PROF_REQUEST
3458
+ | ZEND_FUNC_JIT_ON_HOT_COUNTERS
3459
+ | ZEND_FUNC_JIT_ON_HOT_TRACE ;
3460
+ memset (& func_info -> ssa , 0 , sizeof (zend_func_info ) - offsetof(zend_func_info , ssa ));
3456
3461
} else {
3457
3462
ZEND_SET_FUNC_INFO (op_array , NULL );
3458
3463
}
@@ -3637,6 +3642,7 @@ static int zend_jit_setup_hot_counters(zend_op_array *op_array)
3637
3642
3638
3643
jit_extension = (zend_jit_op_array_hot_extension * )zend_shared_alloc (sizeof (zend_jit_op_array_hot_extension ) + (op_array -> last - 1 ) * sizeof (void * ));
3639
3644
memset (& jit_extension -> func_info , 0 , sizeof (zend_func_info ));
3645
+ jit_extension -> func_info .flags = ZEND_FUNC_JIT_ON_HOT_COUNTERS ;
3640
3646
jit_extension -> counter = & zend_jit_hot_counters [zend_jit_op_array_hash (op_array ) & (ZEND_HOT_COUNTERS_COUNT - 1 )];
3641
3647
for (i = 0 ; i < op_array -> last ; i ++ ) {
3642
3648
jit_extension -> orig_handlers [i ] = op_array -> opcodes [i ].handler ;
@@ -3689,6 +3695,7 @@ ZEND_EXT_API int zend_jit_op_array(zend_op_array *op_array, zend_script *script)
3689
3695
}
3690
3696
jit_extension = (zend_jit_op_array_extension * )zend_shared_alloc (sizeof (zend_jit_op_array_extension ));
3691
3697
memset (& jit_extension -> func_info , 0 , sizeof (zend_func_info ));
3698
+ jit_extension -> func_info .flags = ZEND_FUNC_JIT_ON_FIRST_EXEC ;
3692
3699
jit_extension -> orig_handler = (void * )opline -> handler ;
3693
3700
ZEND_SET_FUNC_INFO (op_array , (void * )jit_extension );
3694
3701
opline -> handler = (const void * )zend_jit_runtime_jit_handler ;
@@ -3708,6 +3715,7 @@ ZEND_EXT_API int zend_jit_op_array(zend_op_array *op_array, zend_script *script)
3708
3715
}
3709
3716
jit_extension = (zend_jit_op_array_extension * )zend_shared_alloc (sizeof (zend_jit_op_array_extension ));
3710
3717
memset (& jit_extension -> func_info , 0 , sizeof (zend_func_info ));
3718
+ jit_extension -> func_info .flags = ZEND_FUNC_JIT_ON_PROF_REQUEST ;
3711
3719
jit_extension -> orig_handler = (void * )opline -> handler ;
3712
3720
ZEND_SET_FUNC_INFO (op_array , (void * )jit_extension );
3713
3721
opline -> handler = (const void * )zend_jit_profile_jit_handler ;
0 commit comments