mirror of
https://github.com/php/php-src.git
synced 2026-04-18 21:41:22 +02:00
Merge branch 'PHP-8.1'
* PHP-8.1: JIT: Fixed incorrect assignment of undefined variable
This commit is contained in:
@@ -5567,7 +5567,12 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
|
||||
if (Z_REG(var_addr) != ZREG_FP) {
|
||||
| ldr Rx(Z_REG(var_addr)), T1 // restore
|
||||
}
|
||||
| b >1
|
||||
if (Z_MODE(var_addr) != IS_MEM_ZVAL || Z_REG(var_addr) != ZREG_FCARG1 || Z_OFFSET(var_addr) != 0) {
|
||||
| LOAD_ZVAL_ADDR FCARG1x, var_addr
|
||||
}
|
||||
| LOAD_ADDR_ZTS FCARG2x, executor_globals, uninitialized_zval
|
||||
| bl ->assign_const
|
||||
| b >9
|
||||
|.code
|
||||
|1:
|
||||
}
|
||||
@@ -5599,6 +5604,9 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
|
||||
} else {
|
||||
| bl ->assign_cv
|
||||
}
|
||||
if ((val_info & MAY_BE_UNDEF) && JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE) {
|
||||
|9:
|
||||
}
|
||||
} else {
|
||||
ZEND_UNREACHABLE();
|
||||
}
|
||||
|
||||
@@ -6042,9 +6042,13 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
|
||||
if (Z_REG(var_addr) != ZREG_FP) {
|
||||
| mov Ra(Z_REG(var_addr)), aword T1 // restore
|
||||
}
|
||||
| jmp >1
|
||||
if (Z_MODE(var_addr) != IS_MEM_ZVAL || Z_REG(var_addr) != ZREG_FCARG1 || Z_OFFSET(var_addr) != 0) {
|
||||
| LOAD_ZVAL_ADDR FCARG1a, var_addr
|
||||
}
|
||||
| LOAD_ADDR_ZTS FCARG2a, executor_globals, uninitialized_zval
|
||||
| call ->assign_const
|
||||
| jmp >9
|
||||
|.code
|
||||
|1:
|
||||
}
|
||||
}
|
||||
if (Z_MODE(var_addr) != IS_MEM_ZVAL || Z_REG(var_addr) != ZREG_FCARG1 || Z_OFFSET(var_addr) != 0) {
|
||||
@@ -6074,6 +6078,9 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
|
||||
} else {
|
||||
| call ->assign_cv
|
||||
}
|
||||
if ((val_info & MAY_BE_UNDEF) && JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE) {
|
||||
|9:
|
||||
}
|
||||
} else {
|
||||
ZEND_UNREACHABLE();
|
||||
}
|
||||
|
||||
@@ -14,10 +14,12 @@ class Test {
|
||||
function test() {
|
||||
$o = new Test;
|
||||
$o->prop = $undef;
|
||||
var_dump($o->prop);
|
||||
}
|
||||
test();
|
||||
?>
|
||||
DONE
|
||||
--EXPECTF--
|
||||
Warning: Undefined variable $undef in %sassign_obj_002.php on line 7
|
||||
NULL
|
||||
DONE
|
||||
|
||||
Reference in New Issue
Block a user