Merge branch 'PHP-8.0'

* PHP-8.0:
  Drop incorrect cache_slot optimization for typed properties
This commit is contained in:
Nikita Popov 2021-07-14 15:10:58 +02:00
commit 90e6a74016
3 changed files with 30 additions and 407 deletions

View File

@ -0,0 +1,30 @@
--TEST--
Demonstrate that cache_slot optimization is illegal due to cache_slot merging
--FILE--
<?php
class Test {
public int $prop;
public function method() {
// Opcache merges cache slots for both assignments.
$this->prop = 1;
try {
$this->prop = "foobar";
} catch (TypeError $e) {
echo $e->getMessage(), "\n";
}
var_dump($this->prop);
}
}
$test = new Test;
$test->method();
$test->method();
?>
--EXPECT--
Cannot assign string to property Test::$prop of type int
int(1)
Cannot assign string to property Test::$prop of type int
int(1)

View File

@ -2379,18 +2379,7 @@ ZEND_VM_C_LABEL(assign_object):
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (OP_DATA_TYPE == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (OP_DATA_TYPE == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
ZEND_VM_C_GOTO(free_and_exit_assign_obj);
} else {
ZEND_VM_C_LABEL(fast_assign_obj):

View File

@ -22784,18 +22784,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -22926,18 +22915,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -23068,18 +23046,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -23210,18 +23177,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -25365,18 +25321,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -25507,18 +25452,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -25649,18 +25583,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -25791,18 +25714,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -29294,18 +29206,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -29436,18 +29337,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -29578,18 +29468,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -29720,18 +29599,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -31720,18 +31588,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -31862,18 +31719,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -32004,18 +31850,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -32146,18 +31981,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -33617,18 +33441,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -33759,18 +33572,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -33901,18 +33703,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -34043,18 +33834,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -36131,18 +35911,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -36273,18 +36042,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -36415,18 +36173,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -36557,18 +36304,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -40313,18 +40049,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -40455,18 +40180,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -40597,18 +40311,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -40739,18 +40442,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -43964,18 +43656,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -44106,18 +43787,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -44248,18 +43918,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -44390,18 +44049,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -48996,18 +48644,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CONST == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -49138,18 +48775,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_TMP_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -49280,18 +48906,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_VAR == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj:
@ -49422,18 +49037,7 @@ assign_object:
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
if (UNEXPECTED(prop_info != NULL)) {
zend_uchar orig_type = IS_UNDEF;
if (IS_CV == IS_CONST) {
orig_type = Z_TYPE_P(value);
}
value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
/* will remain valid, thus no need to check prop_info in future here */
if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
goto free_and_exit_assign_obj;
} else {
fast_assign_obj: