mirror of
https://github.com/php/php-src.git
synced 2024-09-23 10:57:26 +00:00
Merge branch 'PHP-7.4'
* PHP-7.4: Make opcodes to return de-refereced values of typed references (in the same was as for non-typed)
This commit is contained in:
commit
b53445422a
@ -1770,11 +1770,11 @@ static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_i
|
||||
do {
|
||||
if (Z_ISREF_P(prop)) {
|
||||
zend_reference *ref = Z_REF_P(prop);
|
||||
prop = Z_REFVAL_P(prop);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
prop = Z_REFVAL_P(prop);
|
||||
}
|
||||
|
||||
if (UNEXPECTED(prop_info)) {
|
||||
@ -1808,11 +1808,11 @@ static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_
|
||||
} else {
|
||||
if (Z_ISREF_P(prop)) {
|
||||
zend_reference *ref = Z_REF_P(prop);
|
||||
prop = Z_REFVAL_P(prop);
|
||||
if (ZEND_REF_HAS_TYPE_SOURCES(ref)) {
|
||||
zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
|
||||
return;
|
||||
}
|
||||
prop = Z_REFVAL_P(prop);
|
||||
}
|
||||
|
||||
if (UNEXPECTED(prop_info)) {
|
||||
|
@ -1046,11 +1046,11 @@ ZEND_VM_C_LABEL(assign_op_object):
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (OP2_TYPE == IS_CONST) {
|
||||
@ -1109,11 +1109,11 @@ ZEND_VM_HANDLER(29, ZEND_ASSIGN_STATIC_PROP_OP, ANY, ANY, OP)
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(prop))) {
|
||||
ref = Z_REF_P(prop);
|
||||
prop = Z_REFVAL_P(prop);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
prop = Z_REFVAL_P(prop);
|
||||
}
|
||||
|
||||
if (UNEXPECTED(ZEND_TYPE_IS_SET(prop_info->type))) {
|
||||
@ -1230,11 +1230,11 @@ ZEND_VM_HANDLER(26, ZEND_ASSIGN_OP, VAR|CV, CONST|TMPVAR|CV, OP)
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
|
@ -788,11 +788,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_OP_SPEC_HAN
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(prop))) {
|
||||
ref = Z_REF_P(prop);
|
||||
prop = Z_REFVAL_P(prop);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
prop = Z_REFVAL_P(prop);
|
||||
}
|
||||
|
||||
if (UNEXPECTED(ZEND_TYPE_IS_SET(prop_info->type))) {
|
||||
@ -20967,11 +20967,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CONST == IS_CONST) {
|
||||
@ -21103,11 +21103,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_VAR_CONST_HANDL
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
@ -23232,11 +23232,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
|
||||
@ -23369,11 +23369,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_VAR_TMPVAR_HAND
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
@ -26688,11 +26688,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CV == IS_CONST) {
|
||||
@ -26824,11 +26824,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_VAR_CV_HANDLER(
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
@ -29129,11 +29129,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CONST == IS_CONST) {
|
||||
@ -30999,11 +30999,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
|
||||
@ -33396,11 +33396,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CV == IS_CONST) {
|
||||
@ -37415,11 +37415,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CONST == IS_CONST) {
|
||||
@ -37551,11 +37551,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_CV_CONST_HANDLE
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
@ -40894,11 +40894,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
|
||||
@ -41031,11 +41031,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_CV_TMPVAR_HANDL
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
@ -45706,11 +45706,11 @@ assign_op_object:
|
||||
do {
|
||||
if (UNEXPECTED(Z_ISREF_P(zptr))) {
|
||||
ref = Z_REF_P(zptr);
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
zptr = Z_REFVAL_P(zptr);
|
||||
}
|
||||
|
||||
if (IS_CV == IS_CONST) {
|
||||
@ -45842,11 +45842,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OP_SPEC_CV_CV_HANDLER(Z
|
||||
do {
|
||||
if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
|
||||
zend_reference *ref = Z_REF_P(var_ptr);
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
|
||||
zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
|
||||
break;
|
||||
}
|
||||
var_ptr = Z_REFVAL_P(var_ptr);
|
||||
}
|
||||
zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
|
||||
} while (0);
|
||||
|
Loading…
Reference in New Issue
Block a user