@@ -14953,13 +14953,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1495314953 // CACHE_PTR_EX(cache_slot + 2, NULL);
1495414954 }
1495514955
14956- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
14957- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
14958- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
14959- return 0;
14960- }
14961- }
14962-
1496314956 ir_END_list(end_inputs);
1496414957 ir_IF_FALSE(if_has_prop_info);
1496514958 }
@@ -15025,12 +15018,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1502515018 arg3,
1502615019 arg4);
1502715020
15028- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
15029- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
15030- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
15031- return 0;
15032- }
15033- }
1503415021 ir_END_list(end_inputs);
1503515022 }
1503615023 }
@@ -15043,7 +15030,14 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1504315030 return 0;
1504415031 }
1504515032 } else {
15046- 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)) {
15033+ zend_jit_addr real_res_addr;
15034+
15035+ if (res_addr && Z_MODE(res_addr) == IS_REG) {
15036+ real_res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
15037+ } else {
15038+ real_res_addr = res_addr;
15039+ }
15040+ 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)) {
1504715041 return 0;
1504815042 }
1504915043 }
@@ -15093,12 +15087,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1509315087 ir_ADD_OFFSET(run_time_cache, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS),
1509415088 arg5);
1509515089
15096- if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
15097- zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
15098- if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
15099- return 0;
15100- }
15101- }
1510215090 ir_END_list(end_inputs);
1510315091 }
1510415092
@@ -15119,6 +15107,13 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1511915107 jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, opline);
1512015108 }
1512115109
15110+ if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
15111+ zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
15112+ if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
15113+ return 0;
15114+ }
15115+ }
15116+
1512215117 if (may_throw) {
1512315118 zend_jit_check_exception(jit);
1512415119 }
0 commit comments