@@ -521,16 +521,17 @@ static int zend_jit_trace_record_fake_init_call_ex(zend_execute_data *call, zend
521521 && (func -> op_array .fn_flags & (ZEND_ACC_CLOSURE |ZEND_ACC_FAKE_CLOSURE ))) {
522522 return -1 ;
523523 }
524- if (func -> type == ZEND_USER_FUNCTION
525- && (func -> op_array .fn_flags & ZEND_ACC_CLOSURE )) {
524+ if (func -> type == ZEND_USER_FUNCTION ) {
526525 jit_extension =
527526 (zend_jit_op_array_trace_extension * )ZEND_FUNC_INFO (& func -> op_array );
528- if (UNEXPECTED (!jit_extension
529- || !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE )
530- || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE ))) {
527+ if (UNEXPECTED (!jit_extension && ( func -> op_array . fn_flags & ZEND_ACC_CLOSURE ))
528+ || ( jit_extension && !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE ) )
529+ || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE )) {
531530 return -1 ;
532531 }
533- func = (zend_function * )jit_extension -> op_array ;
532+ if (func -> op_array .fn_flags & ZEND_ACC_CLOSURE ) {
533+ func = (zend_function * )jit_extension -> op_array ;
534+ }
534535 }
535536 if (is_megamorphic == ZEND_JIT_EXIT_POLYMORPHISM
536537 /* TODO: use more accurate check ??? */
@@ -1100,17 +1101,18 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
11001101 stop = ZEND_JIT_TRACE_STOP_BAD_FUNC ;
11011102 break ;
11021103 }
1103- if (func -> type == ZEND_USER_FUNCTION
1104- && (func -> op_array .fn_flags & ZEND_ACC_CLOSURE )) {
1104+ if (func -> type == ZEND_USER_FUNCTION ) {
11051105 jit_extension =
11061106 (zend_jit_op_array_trace_extension * )ZEND_FUNC_INFO (& func -> op_array );
1107- if (UNEXPECTED (!jit_extension )
1108- || !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE )
1107+ if (UNEXPECTED (!jit_extension && ( func -> op_array . fn_flags & ZEND_ACC_CLOSURE ) )
1108+ || ( jit_extension && !(jit_extension -> func_info .flags & ZEND_FUNC_JIT_ON_HOT_TRACE ) )
11091109 || (func -> op_array .fn_flags & ZEND_ACC_FAKE_CLOSURE )) {
11101110 stop = ZEND_JIT_TRACE_STOP_INTERPRETER ;
11111111 break ;
11121112 }
1113- func = (zend_function * )jit_extension -> op_array ;
1113+ if (func -> op_array .fn_flags & ZEND_ACC_CLOSURE ) {
1114+ func = (zend_function * )jit_extension -> op_array ;
1115+ }
11141116 }
11151117
11161118#ifndef HAVE_GCC_GLOBAL_REGS
0 commit comments