]> granicus.if.org Git - php/commitdiff
Get rid of IS_OBJ_USE_GUARDS and IS_OBJ_HAS_GUARDS flags
authorDmitry Stogov <dmitry@zend.com>
Tue, 27 Feb 2018 14:38:56 +0000 (17:38 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 27 Feb 2018 14:38:56 +0000 (17:38 +0300)
Zend/zend_compile.h
Zend/zend_object_handlers.c
Zend/zend_objects.c
Zend/zend_types.h

index 5e3487ec93ec241db7a0799aa38e828fbc214335..2c708bdd3069ebc558a78ed1f951bf4758a8779c 100644 (file)
@@ -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 */
index 414d5eeedcfa5d77becc1cbf57723db70fbafca9..e8a8a5432580fd276ea83f235723ca5c6c61c3d8 100644 (file)
@@ -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);
index 1e362e678df5a289932ce2b945b0f73649e71e29..1c0381f8fadae41d4dcf0697bf7d6b2886786d64 100644 (file)
@@ -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);
index 41cdd1c35511a17d081ae0053eff046b68b92aa9..1f8845a85793017950c79c2b3a8cfc0b47575095 100644 (file)
@@ -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)