@@ -3460,6 +3460,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
3460
3460
const zend_op * opline , * orig_opline ;
3461
3461
const zend_ssa_op * ssa_op , * orig_ssa_op ;
3462
3462
int used_stack ;
3463
+ uint32_t frame_flags = 0 ;
3463
3464
3464
3465
JIT_G (current_trace ) = trace_buffer ;
3465
3466
@@ -3749,6 +3750,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
3749
3750
p ++ ;
3750
3751
}
3751
3752
3753
+ frame_flags = 0 ;
3754
+
3752
3755
switch (opline -> opcode ) {
3753
3756
case ZEND_INIT_FCALL :
3754
3757
case ZEND_INIT_FCALL_BY_NAME :
@@ -4513,6 +4516,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
4513
4516
case ZEND_INIT_FCALL :
4514
4517
case ZEND_INIT_FCALL_BY_NAME :
4515
4518
case ZEND_INIT_NS_FCALL_BY_NAME :
4519
+ frame_flags = TRACE_FRAME_MASK_NESTED ;
4516
4520
if (!zend_jit_init_fcall (& dasm_state , opline , op_array_ssa -> cfg .map ? op_array_ssa -> cfg .map [opline - op_array -> opcodes ] : -1 , op_array , ssa , ssa_op , frame -> call_level , p + 1 , used_stack < 0 )) {
4517
4521
goto jit_failure ;
4518
4522
}
@@ -5491,6 +5495,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
5491
5495
delayed_fetch_this = ssa -> var_info [ssa_op -> op1_use ].delayed_fetch_this ;
5492
5496
}
5493
5497
}
5498
+ frame_flags = TRACE_FRAME_MASK_NESTED ;
5494
5499
if (!zend_jit_init_method_call (& dasm_state , opline ,
5495
5500
op_array_ssa -> cfg .map ? op_array_ssa -> cfg .map [opline - op_array -> opcodes ] : -1 ,
5496
5501
op_array , ssa , ssa_op , frame -> call_level ,
@@ -5505,6 +5510,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
5505
5510
}
5506
5511
op2_info = OP2_INFO ();
5507
5512
CHECK_OP2_TRACE_TYPE ();
5513
+ frame_flags = TRACE_FRAME_MASK_NESTED ;
5508
5514
if (!zend_jit_init_closure_call (& dasm_state , opline , op_array_ssa -> cfg .map ? op_array_ssa -> cfg .map [opline - op_array -> opcodes ] : -1 , op_array , ssa , ssa_op , frame -> call_level , p + 1 , used_stack < 0 )) {
5509
5515
goto jit_failure ;
5510
5516
}
@@ -5946,7 +5952,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
5946
5952
}
5947
5953
5948
5954
call = top ;
5949
- TRACE_FRAME_INIT (call , p -> func , TRACE_FRAME_MASK_NESTED , num_args );
5955
+ TRACE_FRAME_INIT (call , p -> func , frame_flags , num_args );
5950
5956
call -> prev = frame -> call ;
5951
5957
if (!(p -> info & ZEND_JIT_TRACE_FAKE_INIT_CALL )) {
5952
5958
TRACE_FRAME_SET_LAST_SEND_BY_VAL (call );
0 commit comments