summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.h2
-rw-r--r--Zend/zend_object_handlers.c3
-rw-r--r--Zend/zend_objects.c6
-rw-r--r--Zend/zend_types.h2
4 files changed, 4 insertions, 9 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 5e3487ec93..2c708bdd30 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -1010,7 +1010,7 @@ END_EXTERN_C()
/* generate ZEND_INIT_FCALL_BY_NAME for userland functions instead of ZEND_INIT_FCALL */
#define ZEND_COMPILE_IGNORE_USER_FUNCTIONS (1<<8)
-/* force IS_OBJ_USE_GUARDS for all classes */
+/* force ZEND_ACC_USE_GUARDS for all classes */
#define ZEND_COMPILE_GUARDS (1<<9)
/* disable builtin special case function calls */
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 414d5eeedc..e8a8a54325 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -495,7 +495,7 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
zval *zv;
uint32_t *ptr;
- ZEND_ASSERT(OBJ_FLAGS(zobj) & IS_OBJ_USE_GUARDS);
+ ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS);
zv = zobj->properties_table + zobj->ce->default_properties_count;
if (EXPECTED(Z_TYPE_P(zv) == IS_STRING)) {
zend_string *str = Z_STR_P(zv);
@@ -526,7 +526,6 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
}
} else {
ZEND_ASSERT(Z_TYPE_P(zv) == IS_UNDEF);
- OBJ_FLAGS(zobj) |= IS_OBJ_HAS_GUARDS;
ZVAL_STR_COPY(zv, member);
Z_PROPERTY_GUARD_P(zv) = 0;
return &Z_PROPERTY_GUARD_P(zv);
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c
index 1e362e678d..1c0381f8fa 100644
--- a/Zend/zend_objects.c
+++ b/Zend/zend_objects.c
@@ -35,7 +35,6 @@ ZEND_API void ZEND_FASTCALL zend_object_std_init(zend_object *object, zend_class
object->properties = NULL;
zend_objects_store_put(object);
if (UNEXPECTED(ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
- OBJ_FLAGS(object) |= IS_OBJ_USE_GUARDS;
ZVAL_UNDEF(object->properties_table + object->ce->default_properties_count);
}
}
@@ -59,13 +58,12 @@ ZEND_API void zend_object_std_dtor(zend_object *object)
p++;
} while (p != end);
}
- if (UNEXPECTED(OBJ_FLAGS(object) & IS_OBJ_HAS_GUARDS)) {
+ if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
if (EXPECTED(Z_TYPE_P(p) == IS_STRING)) {
zend_string_release(Z_STR_P(p));
- } else {
+ } else if (Z_TYPE_P(p) == IS_ARRAY) {
HashTable *guards;
- ZEND_ASSERT(Z_TYPE_P(p) == IS_ARRAY);
guards = Z_ARRVAL_P(p);
ZEND_ASSERT(guards != NULL);
zend_hash_destroy(guards);
diff --git a/Zend/zend_types.h b/Zend/zend_types.h
index 41cdd1c355..1f8845a857 100644
--- a/Zend/zend_types.h
+++ b/Zend/zend_types.h
@@ -509,8 +509,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
/* object flags (zval.value->gc.u.flags) */
#define IS_OBJ_DESTRUCTOR_CALLED (1<<4)
#define IS_OBJ_FREE_CALLED (1<<5)
-#define IS_OBJ_USE_GUARDS (1<<6)
-#define IS_OBJ_HAS_GUARDS (1<<7)
#define OBJ_FLAGS(obj) GC_FLAGS(obj)