@@ -4697,15 +4697,15 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
46974697 }
46984698 op1_info = OP1_INFO ();
46994699 op1_addr = OP1_REG_ADDR ();
4700+ op1_indirect = 0 ;
47004701 if (opline -> op1_type == IS_VAR ) {
47014702 if (orig_op1_type != IS_UNKNOWN
47024703 && (orig_op1_type & IS_TRACE_INDIRECT )) {
4704+ op1_indirect = 1 ;
47034705 if (!zend_jit_fetch_indirect_var (& ctx , opline , orig_op1_type ,
47044706 & op1_info , & op1_addr , !ssa -> var_info [ssa_op -> op1_use ].indirect_reference )) {
47054707 goto jit_failure ;
47064708 }
4707- } else {
4708- break ;
47094709 }
47104710 }
47114711 if (orig_op1_type != IS_UNKNOWN
@@ -4727,7 +4727,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
47274727 CHECK_OP1_DATA_TRACE_TYPE ();
47284728 op1_def_info = OP1_DEF_INFO ();
47294729 if (!zend_jit_assign_dim_op (& ctx , opline ,
4730- op1_info , op1_def_info , op1_addr ,
4730+ op1_info , op1_def_info , op1_addr , op1_indirect ,
47314731 op2_info , (opline -> op2_type != IS_UNUSED ) ? OP2_REG_ADDR () : 0 ,
47324732 (opline -> op2_type != IS_UNUSED ) ? OP2_RANGE () : NULL ,
47334733 op1_data_info , OP1_DATA_REG_ADDR (), OP1_DATA_RANGE (), val_type ,
@@ -5009,6 +5009,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
50095009 case ZEND_ASSIGN_DIM :
50105010 op1_info = OP1_INFO ();
50115011 op1_addr = OP1_REG_ADDR ();
5012+ op1_indirect = 0 ;
50125013 if (opline -> op1_type == IS_CV
50135014 && (opline + 1 )-> op1_type == IS_CV
50145015 && (opline + 1 )-> op1 .var == opline -> op1 .var ) {
@@ -5017,14 +5018,12 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
50175018 }
50185019 if (opline -> op1_type == IS_VAR ) {
50195020 if (orig_op1_type != IS_UNKNOWN
5020- && (orig_op1_type & IS_TRACE_INDIRECT )
5021- && opline -> result_type == IS_UNUSED ) {
5021+ && (orig_op1_type & IS_TRACE_INDIRECT )) {
5022+ op1_indirect = 1 ;
50225023 if (!zend_jit_fetch_indirect_var (& ctx , opline , orig_op1_type ,
50235024 & op1_info , & op1_addr , !ssa -> var_info [ssa_op -> op1_use ].indirect_reference )) {
50245025 goto jit_failure ;
50255026 }
5026- } else {
5027- break ;
50285027 }
50295028 }
50305029 if (orig_op1_type != IS_UNKNOWN
@@ -5045,7 +5044,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
50455044 op1_data_info = OP1_DATA_INFO ();
50465045 CHECK_OP1_DATA_TRACE_TYPE ();
50475046 if (!zend_jit_assign_dim (& ctx , opline ,
5048- op1_info , op1_addr ,
5047+ op1_info , op1_addr , op1_indirect ,
50495048 op2_info , (opline -> op2_type != IS_UNUSED ) ? OP2_REG_ADDR () : 0 ,
50505049 (opline -> op2_type != IS_UNUSED ) ? OP2_RANGE () : NULL ,
50515050 op1_data_info , OP1_DATA_REG_ADDR (),
0 commit comments