@@ -6320,7 +6320,12 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
63206320 | LOAD_ZVAL_ADDR FCARG2x, op3_addr
63216321 | LOAD_ADDR CARG3, binary_op
63226322 | SET_EX_OPLINE opline, REG0
6323- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6323+ if (((opline+1)->op1_type & (IS_TMP_VAR|IS_VAR))
6324+ && (op1_data_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
6325+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
6326+ } else {
6327+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6328+ }
63246329 | b >9
63256330 |.code
63266331 |1:
@@ -6441,7 +6446,12 @@ static int zend_jit_assign_op(dasm_State **Dst, const zend_op *opline, uint32_t
64416446 | LOAD_ZVAL_ADDR FCARG2x, op2_addr
64426447 | LOAD_ADDR CARG3, binary_op
64436448 | SET_EX_OPLINE opline, REG0
6444- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6449+ if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
6450+ && (op2_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
6451+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
6452+ } else {
6453+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6454+ }
64456455 zend_jit_check_exception(Dst);
64466456 | b >9
64476457 |.code
@@ -13088,7 +13098,12 @@ static int zend_jit_assign_obj_op(dasm_State **Dst,
1308813098 | LOAD_ZVAL_ADDR FCARG2x, val_addr
1308913099 }
1309013100 | LOAD_ADDR CARG3, binary_op
13091- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13101+ if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
13102+ && (val_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
13103+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
13104+ } else {
13105+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13106+ }
1309213107 | b >9
1309313108 |.code
1309413109
@@ -13149,7 +13164,12 @@ static int zend_jit_assign_obj_op(dasm_State **Dst,
1314913164 | SET_EX_OPLINE opline, REG0
1315013165 }
1315113166 | LOAD_ADDR CARG3, binary_op
13152- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13167+ if (((opline+1)->op1_type & (IS_TMP_VAR|IS_VAR))
13168+ && (val_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
13169+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
13170+ } else {
13171+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13172+ }
1315313173 | b >9
1315413174 |.code
1315513175 |2:
0 commit comments