mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Property access micro-optimization. (ZEND_WRONG_PROPERTY_OFFSET and ZEND_DYNAMIC_PROPERTY_OFFSET are hidden, use one comparison instead of two on fast paths. "Negative" offsets are reserved for future optimizations).
This commit is contained in:
parent
b81659d34f
commit
0fb05f1487
5 changed files with 149 additions and 148 deletions
|
@ -1902,7 +1902,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c
|
|||
zend_object *zobj = Z_OBJ_P(container);
|
||||
zval *retval;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_INDIRECT(result, retval);
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
|
||||
#define DEBUG_OBJECT_HANDLERS 0
|
||||
|
||||
#define ZEND_WRONG_PROPERTY_OFFSET 0
|
||||
#define ZEND_DYNAMIC_PROPERTY_OFFSET ((uint32_t)(-1))
|
||||
|
||||
/* guard flags */
|
||||
#define IN_GET (1<<0)
|
||||
#define IN_SET (1<<1)
|
||||
|
@ -582,13 +585,13 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
|
|||
/* make zend_get_property_info silent if we have getter - we may want to use it */
|
||||
property_offset = zend_get_property_offset(zobj->ce, Z_STR_P(member), (type == BP_VAR_IS) || (zobj->ce->__get != NULL), cache_slot);
|
||||
|
||||
if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
retval = OBJ_PROP(zobj, property_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
goto exit;
|
||||
}
|
||||
} else if (EXPECTED(zobj->properties != NULL)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
retval = OBJ_PROP(zobj, property_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
goto exit;
|
||||
}
|
||||
} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
|
||||
if (EXPECTED(zobj->properties != NULL)) {
|
||||
retval = zend_hash_find(zobj->properties, Z_STR_P(member));
|
||||
if (EXPECTED(retval)) goto exit;
|
||||
}
|
||||
|
@ -688,13 +691,13 @@ ZEND_API void zend_std_write_property(zval *object, zval *member, zval *value, v
|
|||
|
||||
property_offset = zend_get_property_offset(zobj->ce, Z_STR_P(member), (zobj->ce->__set != NULL), cache_slot);
|
||||
|
||||
if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
variable_ptr = OBJ_PROP(zobj, property_offset);
|
||||
if (Z_TYPE_P(variable_ptr) != IS_UNDEF) {
|
||||
goto found;
|
||||
}
|
||||
} else if (EXPECTED(zobj->properties != NULL)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
variable_ptr = OBJ_PROP(zobj, property_offset);
|
||||
if (Z_TYPE_P(variable_ptr) != IS_UNDEF) {
|
||||
goto found;
|
||||
}
|
||||
} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
|
||||
if (EXPECTED(zobj->properties != NULL)) {
|
||||
if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
|
||||
if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
|
||||
GC_REFCOUNT(zobj->properties)--;
|
||||
|
@ -723,7 +726,7 @@ found:
|
|||
zend_std_call_setter(&tmp_object, member, value);
|
||||
(*guard) &= ~IN_SET;
|
||||
zval_ptr_dtor(&tmp_object);
|
||||
} else if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
} else if (EXPECTED(!IS_WRONG_PROPERTY_OFFSET(property_offset))) {
|
||||
goto write_std_property;
|
||||
} else {
|
||||
if (Z_STRVAL_P(member)[0] == '\0' && Z_STRLEN_P(member) != 0) {
|
||||
|
@ -731,7 +734,7 @@ found:
|
|||
goto exit;
|
||||
}
|
||||
}
|
||||
} else if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
} else if (EXPECTED(!IS_WRONG_PROPERTY_OFFSET(property_offset))) {
|
||||
zval tmp;
|
||||
|
||||
write_std_property:
|
||||
|
@ -744,7 +747,7 @@ write_std_property:
|
|||
Z_ADDREF_P(value);
|
||||
}
|
||||
}
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
ZVAL_COPY_VALUE(OBJ_PROP(zobj, property_offset), value);
|
||||
} else {
|
||||
if (!zobj->properties) {
|
||||
|
@ -878,49 +881,47 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type,
|
|||
|
||||
property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__get != NULL), cache_slot);
|
||||
|
||||
if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
retval = OBJ_PROP(zobj, property_offset);
|
||||
if (UNEXPECTED(Z_TYPE_P(retval) == IS_UNDEF)) {
|
||||
if (EXPECTED(!zobj->ce->__get) ||
|
||||
UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) {
|
||||
ZVAL_NULL(retval);
|
||||
/* Notice is thrown after creation of the property, to avoid EG(std_property_info)
|
||||
* being overwritten in an error handler. */
|
||||
if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
|
||||
zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
|
||||
}
|
||||
} else {
|
||||
/* we do have getter - fail and let it try again with usual get/set */
|
||||
retval = NULL;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (EXPECTED(zobj->properties)) {
|
||||
if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
|
||||
if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
|
||||
GC_REFCOUNT(zobj->properties)--;
|
||||
}
|
||||
zobj->properties = zend_array_dup(zobj->properties);
|
||||
}
|
||||
if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) {
|
||||
if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
|
||||
zend_string_release(name);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
retval = OBJ_PROP(zobj, property_offset);
|
||||
if (UNEXPECTED(Z_TYPE_P(retval) == IS_UNDEF)) {
|
||||
if (EXPECTED(!zobj->ce->__get) ||
|
||||
UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) {
|
||||
if (UNEXPECTED(!zobj->properties)) {
|
||||
rebuild_object_properties(zobj);
|
||||
}
|
||||
retval = zend_hash_update(zobj->properties, name, &EG(uninitialized_zval));
|
||||
ZVAL_NULL(retval);
|
||||
/* Notice is thrown after creation of the property, to avoid EG(std_property_info)
|
||||
* being overwritten in an error handler. */
|
||||
if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
|
||||
zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
|
||||
}
|
||||
} else {
|
||||
/* we do have getter - fail and let it try again with usual get/set */
|
||||
retval = NULL;
|
||||
}
|
||||
}
|
||||
} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
|
||||
if (EXPECTED(zobj->properties)) {
|
||||
if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
|
||||
if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
|
||||
GC_REFCOUNT(zobj->properties)--;
|
||||
}
|
||||
zobj->properties = zend_array_dup(zobj->properties);
|
||||
}
|
||||
if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) {
|
||||
if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
|
||||
zend_string_release(name);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
if (EXPECTED(!zobj->ce->__get) ||
|
||||
UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) {
|
||||
if (UNEXPECTED(!zobj->properties)) {
|
||||
rebuild_object_properties(zobj);
|
||||
}
|
||||
retval = zend_hash_update(zobj->properties, name, &EG(uninitialized_zval));
|
||||
/* Notice is thrown after creation of the property, to avoid EG(std_property_info)
|
||||
* being overwritten in an error handler. */
|
||||
if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
|
||||
zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -949,28 +950,27 @@ static void zend_std_unset_property(zval *object, zval *member, void **cache_slo
|
|||
|
||||
property_offset = zend_get_property_offset(zobj->ce, Z_STR_P(member), (zobj->ce->__unset != NULL), cache_slot);
|
||||
|
||||
if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
zval *slot = OBJ_PROP(zobj, property_offset);
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
zval *slot = OBJ_PROP(zobj, property_offset);
|
||||
|
||||
if (Z_TYPE_P(slot) != IS_UNDEF) {
|
||||
zval_ptr_dtor(slot);
|
||||
ZVAL_UNDEF(slot);
|
||||
if (zobj->properties) {
|
||||
zobj->properties->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
|
||||
}
|
||||
goto exit;
|
||||
if (Z_TYPE_P(slot) != IS_UNDEF) {
|
||||
zval_ptr_dtor(slot);
|
||||
ZVAL_UNDEF(slot);
|
||||
if (zobj->properties) {
|
||||
zobj->properties->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
|
||||
}
|
||||
} else if (EXPECTED(zobj->properties != NULL)) {
|
||||
if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
|
||||
if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
|
||||
GC_REFCOUNT(zobj->properties)--;
|
||||
}
|
||||
zobj->properties = zend_array_dup(zobj->properties);
|
||||
}
|
||||
if (EXPECTED(zend_hash_del(zobj->properties, Z_STR_P(member)) != FAILURE)) {
|
||||
goto exit;
|
||||
goto exit;
|
||||
}
|
||||
} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))
|
||||
&& EXPECTED(zobj->properties != NULL)) {
|
||||
if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
|
||||
if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
|
||||
GC_REFCOUNT(zobj->properties)--;
|
||||
}
|
||||
zobj->properties = zend_array_dup(zobj->properties);
|
||||
}
|
||||
if (EXPECTED(zend_hash_del(zobj->properties, Z_STR_P(member)) != FAILURE)) {
|
||||
goto exit;
|
||||
}
|
||||
} else if (UNEXPECTED(EG(exception))) {
|
||||
goto exit;
|
||||
|
@ -1524,13 +1524,13 @@ static int zend_std_has_property(zval *object, zval *member, int has_set_exists,
|
|||
|
||||
property_offset = zend_get_property_offset(zobj->ce, Z_STR_P(member), 1, cache_slot);
|
||||
|
||||
if (EXPECTED(property_offset != ZEND_WRONG_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(property_offset != ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
value = OBJ_PROP(zobj, property_offset);
|
||||
if (Z_TYPE_P(value) != IS_UNDEF) {
|
||||
goto found;
|
||||
}
|
||||
} else if (EXPECTED(zobj->properties != NULL) &&
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
|
||||
value = OBJ_PROP(zobj, property_offset);
|
||||
if (Z_TYPE_P(value) != IS_UNDEF) {
|
||||
goto found;
|
||||
}
|
||||
} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
|
||||
if (EXPECTED(zobj->properties != NULL) &&
|
||||
(value = zend_hash_find(zobj->properties, Z_STR_P(member))) != NULL) {
|
||||
found:
|
||||
switch (has_set_exists) {
|
||||
|
|
|
@ -27,8 +27,9 @@ struct _zend_property_info;
|
|||
#define ZEND_WRONG_PROPERTY_INFO \
|
||||
((struct _zend_property_info*)((zend_intptr_t)-1))
|
||||
|
||||
#define ZEND_DYNAMIC_PROPERTY_OFFSET ((uint32_t)(-1))
|
||||
#define ZEND_WRONG_PROPERTY_OFFSET ((uint32_t)(-2))
|
||||
#define IS_VALID_PROPERTY_OFFSET(offset) ((int32_t)(offset) > 0)
|
||||
#define IS_WRONG_PROPERTY_OFFSET(offset) ((int32_t)(offset) == 0)
|
||||
#define IS_DYNAMIC_PROPERTY_OFFSET(offset) ((int32_t)(offset) < 0)
|
||||
|
||||
/* The following rule applies to read_property() and read_dimension() implementations:
|
||||
If you return a zval which is not otherwise referenced by the extension or the engine's
|
||||
|
|
|
@ -1792,7 +1792,7 @@ ZEND_VM_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMP|VAR|UNUSED|THIS|CV, CONST|TMPVAR
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -1913,7 +1913,7 @@ ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -2083,7 +2083,7 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC(
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
ZEND_VM_C_LABEL(fast_assign_obj):
|
||||
|
|
|
@ -5008,7 +5008,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_H
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -5081,7 +5081,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -9057,7 +9057,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HAND
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -9130,7 +9130,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -11076,7 +11076,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -11150,7 +11150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -13556,7 +13556,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -14908,7 +14908,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLE
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -15430,7 +15430,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -18239,7 +18239,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -18445,7 +18445,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -18603,7 +18603,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -18761,7 +18761,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -18919,7 +18919,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -22577,7 +22577,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLE
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -22783,7 +22783,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -22941,7 +22941,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -23099,7 +23099,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -23257,7 +23257,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -25187,7 +25187,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -25394,7 +25394,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -25552,7 +25552,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -25710,7 +25710,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -25868,7 +25868,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -27247,7 +27247,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -27367,7 +27367,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -27523,7 +27523,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -27681,7 +27681,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -27839,7 +27839,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -27997,7 +27997,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -29856,7 +29856,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -29976,7 +29976,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -30132,7 +30132,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -30290,7 +30290,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -30448,7 +30448,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -30606,7 +30606,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -31568,7 +31568,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -31689,7 +31689,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -31846,7 +31846,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -32004,7 +32004,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -32162,7 +32162,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -32320,7 +32320,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -36095,7 +36095,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HAND
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -36215,7 +36215,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -36384,7 +36384,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -36542,7 +36542,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -36700,7 +36700,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -36858,7 +36858,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -42545,7 +42545,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -42665,7 +42665,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLE
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -42834,7 +42834,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -42992,7 +42992,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -43150,7 +43150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -43308,7 +43308,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -46223,7 +46223,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HAN
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
|
||||
|
@ -46344,7 +46344,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -46514,7 +46514,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -46672,7 +46672,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -46830,7 +46830,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -46988,7 +46988,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D
|
|||
zend_object *zobj = Z_OBJ_P(object);
|
||||
zval *property_val;
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
property_val = OBJ_PROP(zobj, prop_offset);
|
||||
if (Z_TYPE_P(property_val) != IS_UNDEF) {
|
||||
fast_assign_obj:
|
||||
|
@ -49590,7 +49590,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -51927,7 +51927,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
@ -53257,7 +53257,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVA
|
|||
EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
|
||||
uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
|
||||
|
||||
if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
|
||||
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
|
||||
retval = OBJ_PROP(zobj, prop_offset);
|
||||
if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), retval);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue