@@ -5342,7 +5342,6 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
53425342 | // hval = Z_LVAL_P(dim);
53435343 | GET_ZVAL_LVAL ZREG_FCARG2, op2_addr, TMP1
53445344 }
5345- | SET_EX_OPLINE opline, REG0
53465345 if (packed_loaded) {
53475346 | EXT_CALL zend_jit_hash_index_lookup_rw_no_packed, REG0
53485347 } else {
@@ -5465,7 +5464,6 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
54655464 }
54665465 break;
54675466 case BP_VAR_RW:
5468- | SET_EX_OPLINE opline, REG0
54695467 if (opline->op2_type != IS_CONST) {
54705468 | EXT_CALL zend_jit_symtable_lookup_rw, REG0
54715469 } else {
@@ -5512,7 +5510,9 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
55125510 |.cold_code
55135511 |3:
55145512 }
5515- | SET_EX_OPLINE opline, REG0
5513+ if (type != BP_VAR_RW) {
5514+ | SET_EX_OPLINE opline, REG0
5515+ }
55165516 | LOAD_ZVAL_ADDR FCARG2x, op2_addr
55175517 switch (type) {
55185518 case BP_VAR_R:
@@ -6233,6 +6233,7 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
62336233 op2_addr = (opline->op2_type != IS_UNUSED) ? OP2_ADDR() : 0;
62346234 op3_addr = OP1_DATA_ADDR();
62356235
6236+ | SET_EX_OPLINE opline, REG0
62366237 if (op1_info & MAY_BE_REF) {
62376238 | LOAD_ZVAL_ADDR FCARG1x, op1_addr
62386239 | IF_NOT_Z_TYPE FCARG1x, IS_REFERENCE, >1, TMP1w
@@ -6244,7 +6245,6 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
62446245 | b >3
62456246 |.cold_code
62466247 |2:
6247- | SET_EX_OPLINE opline, REG0
62486248 | EXT_CALL zend_jit_prepare_assign_dim_ref, REG0
62496249 | mov FCARG1x, RETVALx
62506250 | cbnz RETVALx, >1
@@ -6277,7 +6277,6 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
62776277 if (op1_info & MAY_BE_NULL) {
62786278 | IF_NOT_ZVAL_TYPE op1_addr, IS_UNDEF, >1, ZREG_TMP1
62796279 }
6280- | SET_EX_OPLINE opline, REG0
62816280 | LOAD_32BIT_VAL FCARG1x, opline->op1.var
62826281 | EXT_CALL zend_jit_undefined_op_helper, REG0
62836282 |1:
@@ -6359,7 +6358,6 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
63596358 |2:
63606359 | LOAD_ZVAL_ADDR FCARG2x, op3_addr
63616360 | LOAD_ADDR CARG3, binary_op
6362- | SET_EX_OPLINE opline, REG0
63636361 if (((opline+1)->op1_type & (IS_TMP_VAR|IS_VAR))
63646362 && (op1_data_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
63656363 | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
@@ -6417,7 +6415,6 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
64176415 |7:
64186416 }
64196417
6420- | SET_EX_OPLINE opline, REG0
64216418 if (Z_REG(op1_addr) != ZREG_FCARG1 || Z_OFFSET(op1_addr) != 0) {
64226419 | LOAD_ZVAL_ADDR FCARG1x, op1_addr
64236420 }
@@ -11532,6 +11529,9 @@ static int zend_jit_fetch_dim(dasm_State **Dst,
1153211529
1153311530 op2_addr = (opline->op2_type != IS_UNUSED) ? OP2_ADDR() : 0;
1153411531
11532+ if (opline->opcode == ZEND_FETCH_DIM_RW) {
11533+ | SET_EX_OPLINE opline, REG0
11534+ }
1153511535 if (op1_info & MAY_BE_REF) {
1153611536 may_throw = 1;
1153711537 | LOAD_ZVAL_ADDR FCARG1x, op1_addr
@@ -11545,7 +11545,9 @@ static int zend_jit_fetch_dim(dasm_State **Dst,
1154511545 |.cold_code
1154611546 |2:
1154711547 | SET_EX_OPLINE opline, REG0
11548- | EXT_CALL zend_jit_prepare_assign_dim_ref, REG0
11548+ if (if (opline->opcode != ZEND_FETCH_DIM_RW) {
11549+ | EXT_CALL zend_jit_prepare_assign_dim_ref, REG0
11550+ }
1154911551 | mov FCARG1x, RETVALx
1155011552 | cbnz FCARG1x, >1
1155111553 | b ->exception_handler_undef
@@ -11579,7 +11581,6 @@ static int zend_jit_fetch_dim(dasm_State **Dst,
1157911581 if (op1_info & MAY_BE_NULL) {
1158011582 | IF_NOT_ZVAL_TYPE op1_addr, IS_UNDEF, >1, ZREG_TMP1
1158111583 }
11582- | SET_EX_OPLINE opline, REG0
1158311584 | LOAD_32BIT_VAL FCARG1w, opline->op1.var
1158411585 | EXT_CALL zend_jit_undefined_op_helper, REG0
1158511586 |1:
@@ -11666,7 +11667,9 @@ static int zend_jit_fetch_dim(dasm_State **Dst,
1166611667 |7:
1166711668 }
1166811669
11669- | SET_EX_OPLINE opline, REG0
11670+ if (opline->opcode != ZEND_FETCH_DIM_RW) {
11671+ | SET_EX_OPLINE opline, REG0
11672+ }
1167011673 if (Z_REG(op1_addr) != ZREG_FCARG1 || Z_OFFSET(op1_addr) != 0) {
1167111674 | LOAD_ZVAL_ADDR FCARG1x, op1_addr
1167211675 }
0 commit comments