mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix register allocarion for result of ASSIGN_OBJ (#17994)
This commit is contained in:
commit
af704ae067
1 changed files with 15 additions and 20 deletions
|
@ -14953,13 +14953,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
|
||||||
// CACHE_PTR_EX(cache_slot + 2, NULL);
|
// CACHE_PTR_EX(cache_slot + 2, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
|
|
||||||
zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
|
|
||||||
if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ir_END_list(end_inputs);
|
ir_END_list(end_inputs);
|
||||||
ir_IF_FALSE(if_has_prop_info);
|
ir_IF_FALSE(if_has_prop_info);
|
||||||
}
|
}
|
||||||
|
@ -15025,12 +15018,6 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
|
||||||
arg3,
|
arg3,
|
||||||
arg4);
|
arg4);
|
||||||
|
|
||||||
if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
|
|
||||||
zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
|
|
||||||
if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ir_END_list(end_inputs);
|
ir_END_list(end_inputs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15043,7 +15030,14 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
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)) {
|
zend_jit_addr real_res_addr;
|
||||||
|
|
||||||
|
if (res_addr && Z_MODE(res_addr) == IS_REG) {
|
||||||
|
real_res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
|
||||||
|
} else {
|
||||||
|
real_res_addr = res_addr;
|
||||||
|
}
|
||||||
|
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)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15093,12 +15087,6 @@ slow_path:
|
||||||
ir_ADD_OFFSET(run_time_cache, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS),
|
ir_ADD_OFFSET(run_time_cache, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS),
|
||||||
arg5);
|
arg5);
|
||||||
|
|
||||||
if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
|
|
||||||
zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
|
|
||||||
if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ir_END_list(end_inputs);
|
ir_END_list(end_inputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15119,6 +15107,13 @@ slow_path:
|
||||||
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, opline);
|
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, opline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RETURN_VALUE_USED(opline) && Z_MODE(res_addr) == IS_REG) {
|
||||||
|
zend_jit_addr real_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
|
||||||
|
if (!zend_jit_load_reg(jit, real_addr, res_addr, res_info)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (may_throw) {
|
if (may_throw) {
|
||||||
zend_jit_check_exception(jit);
|
zend_jit_check_exception(jit);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue