@@ -14748,13 +14748,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
14748
14748
// CACHE_PTR_EX(cache_slot + 2, NULL);
14749
14749
}
14750
14750
14751
- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
14752
- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14753
- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
14754
- return 0;
14755
- }
14756
- }
14757
-
14758
14751
ir_END_list(end_inputs);
14759
14752
ir_IF_FALSE(if_has_prop_info);
14760
14753
}
@@ -14820,12 +14813,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
14820
14813
arg3,
14821
14814
arg4);
14822
14815
14823
- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
14824
- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14825
- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
14826
- return 0;
14827
- }
14828
- }
14829
14816
ir_END_list(end_inputs);
14830
14817
}
14831
14818
}
@@ -14838,7 +14825,14 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
14838
14825
return 0;
14839
14826
}
14840
14827
} else {
14841
- if (!zend_jit_assign_to_variable(jit, opline, prop_addr, prop_addr, -1, -1, (opline+1)->op1_type, val_addr, val_info, res_addr, 0, 0)) {
14828
+ zend_jit_addr real_res_addr;
14829
+
14830
+ if (res_addr && Z_MODE(res_addr) == IS_REG) {
14831
+ real_res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14832
+ } else {
14833
+ real_res_addr = res_addr;
14834
+ }
14835
+ if (!zend_jit_assign_to_variable(jit, opline, prop_addr, prop_addr, -1, -1, (opline+1)->op1_type, val_addr, val_info, real_res_addr, 0, 0)) {
14842
14836
return 0;
14843
14837
}
14844
14838
}
@@ -14888,12 +14882,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
14888
14882
ir_ADD_OFFSET(run_time_cache, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS),
14889
14883
arg5);
14890
14884
14891
- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
14892
- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14893
- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
14894
- return 0;
14895
- }
14896
- }
14897
14885
ir_END_list(end_inputs);
14898
14886
}
14899
14887
@@ -14914,6 +14902,13 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
14914
14902
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, opline);
14915
14903
}
14916
14904
14905
+ if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
14906
+ zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14907
+ if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
14908
+ return 0;
14909
+ }
14910
+ }
14911
+
14917
14912
if (may_throw) {
14918
14913
zend_jit_check_exception(jit);
14919
14914
}
0 commit comments