@@ -465,7 +465,9 @@ static int zend_jit_trace_record_fake_init_call_ex(zend_execute_data *call, zend
465
465
&& (func -> op_array .fn_flags & ZEND_ACC_CLOSURE )) {
466
466
jit_extension =
467
467
(zend_jit_op_array_trace_extension * )ZEND_FUNC_INFO (& func -> op_array );
468
- if (UNEXPECTED (!jit_extension || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE ))) {
468
+ if (UNEXPECTED (!jit_extension
469
+ || !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE )
470
+ || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE ))) {
469
471
return -1 ;
470
472
}
471
473
func = (zend_function * )jit_extension -> op_array ;
@@ -765,8 +767,9 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
765
767
op_array = & EX (func )-> op_array ;
766
768
jit_extension =
767
769
(zend_jit_op_array_trace_extension * )ZEND_FUNC_INFO (op_array );
768
- if (UNEXPECTED (!jit_extension )) {
769
- stop = ZEND_JIT_TRACE_STOP_BAD_FUNC ;
770
+ if (UNEXPECTED (!jit_extension )
771
+ || UNEXPECTED (!(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE ))) {
772
+ stop = ZEND_JIT_TRACE_STOP_INTERPRETER ;
770
773
break ;
771
774
}
772
775
offset = jit_extension -> offset ;
@@ -902,7 +905,9 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
902
905
&& (func -> op_array .fn_flags & ZEND_ACC_CLOSURE )) {
903
906
jit_extension =
904
907
(zend_jit_op_array_trace_extension * )ZEND_FUNC_INFO (& func -> op_array );
905
- if (UNEXPECTED (!jit_extension ) || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE )) {
908
+ if (UNEXPECTED (!jit_extension )
909
+ || !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE )
910
+ || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE )) {
906
911
stop = ZEND_JIT_TRACE_STOP_INTERPRETER ;
907
912
break ;
908
913
}
0 commit comments