From: Dmitry Stogov Date: Tue, 27 Feb 2018 14:38:56 +0000 (+0300) Subject: Get rid of IS_OBJ_USE_GUARDS and IS_OBJ_HAS_GUARDS flags X-Git-Tag: php-7.3.0alpha1~295 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58880e3fc1a912d71bb4e19a74480a7458147728;p=php Get rid of IS_OBJ_USE_GUARDS and IS_OBJ_HAS_GUARDS flags --- 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)