]> granicus.if.org Git - php/commitdiff
Use OBJ_FLAGS() macro to access object flags (even if they are currently stored toget...
authorDmitry Stogov <dmitry@zend.com>
Mon, 22 Jan 2018 12:57:00 +0000 (15:57 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 22 Jan 2018 12:57:00 +0000 (15:57 +0300)
Zend/zend_gc.c
Zend/zend_object_handlers.c
Zend/zend_objects.c
Zend/zend_objects_API.c
Zend/zend_objects_API.h
Zend/zend_types.h
ext/pdo_mysql/mysql_statement.c
ext/pdo_pgsql/pgsql_statement.c

index adebbbb7915166f02fe815859c3b514215e88bad..39ed6a96a980d0198ebdf0232909580fd0c4c697 100644 (file)
@@ -379,7 +379,7 @@ tail_call:
                zend_object_get_gc_t get_gc;
                zend_object *obj = (zend_object*)ref;
 
-               if (EXPECTED(!(GC_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
+               if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
                             (get_gc = obj->handlers->get_gc) != NULL)) {
                        int n;
                        zval *zv, *end;
@@ -489,7 +489,7 @@ tail_call:
                        zend_object_get_gc_t get_gc;
                        zend_object *obj = (zend_object*)ref;
 
-                       if (EXPECTED(!(GC_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
+                       if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
                                 (get_gc = obj->handlers->get_gc) != NULL)) {
                                int n;
                                zval *zv, *end;
@@ -602,7 +602,7 @@ tail_call:
                                zend_object_get_gc_t get_gc;
                                zend_object *obj = (zend_object*)ref;
 
-                               if (EXPECTED(!(GC_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
+                               if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
                                             (get_gc = obj->handlers->get_gc) != NULL)) {
                                        int n;
                                        zval *zv, *end;
@@ -764,7 +764,7 @@ tail_call:
                        zend_object_get_gc_t get_gc;
                        zend_object *obj = (zend_object*)ref;
 
-                       if (EXPECTED(!(GC_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
+                       if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
                                     (get_gc = obj->handlers->get_gc) != NULL)) {
                                int n;
                                zval *zv, *end;
@@ -956,7 +956,7 @@ tail_call:
                        zend_object_get_gc_t get_gc;
                        zend_object *obj = (zend_object*)ref;
 
-                       if (EXPECTED(!(GC_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
+                       if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED) &&
                                 (get_gc = obj->handlers->get_gc) != NULL)) {
                                int n;
                                zval *zv, *end;
@@ -1112,9 +1112,9 @@ ZEND_API int zend_gc_collect_cycles(void)
                                if (GC_TYPE(p) == IS_OBJECT) {
                                        zend_object *obj = (zend_object*)p;
 
-                                       if (!(GC_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
+                                       if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
                                                GC_TRACE_REF(obj, "calling destructor");
-                                               GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
+                                               OBJ_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
                                                if (obj->handlers->dtor_obj
                                                 && (obj->handlers->dtor_obj != zend_objects_destroy_object
                                                  || obj->ce->destructor)) {
@@ -1151,8 +1151,8 @@ ZEND_API int zend_gc_collect_cycles(void)
 
                                EG(objects_store).object_buckets[obj->handle] = SET_OBJ_INVALID(obj);
                                GC_TYPE(obj) = IS_NULL;
-                               if (!(GC_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
-                                       GC_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
+                               if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
+                                       OBJ_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
                                        if (obj->handlers->free_obj) {
                                                GC_ADDREF(obj);
                                                obj->handlers->free_obj(obj);
index 5eef84d88593a20999f02edbc7573c26db3ccfba..2a029ebfdd6088e7f7eedd9fbab81bef0394375a 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(GC_FLAGS(zobj) & IS_OBJ_USE_GUARDS);
+       ZEND_ASSERT(OBJ_FLAGS(zobj) & IS_OBJ_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,7 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
                }
        } else {
                ZEND_ASSERT(Z_TYPE_P(zv) == IS_UNDEF);
-               GC_FLAGS(zobj) |= IS_OBJ_HAS_GUARDS;
+               OBJ_FLAGS(zobj) |= IS_OBJ_HAS_GUARDS;
                ZVAL_STR_COPY(zv, member);
                zv->u2.property_guard = 0;
                return &zv->u2.property_guard;
index 53e11b1e775082b99352f72776e5d20ff539007e..1e362e678df5a289932ce2b945b0f73649e71e29 100644 (file)
@@ -35,7 +35,7 @@ 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)) {
-               GC_FLAGS(object) |= IS_OBJ_USE_GUARDS;
+               OBJ_FLAGS(object) |= IS_OBJ_USE_GUARDS;
                ZVAL_UNDEF(object->properties_table + object->ce->default_properties_count);
        }
 }
@@ -59,7 +59,7 @@ ZEND_API void zend_object_std_dtor(zend_object *object)
                        p++;
                } while (p != end);
        }
-       if (UNEXPECTED(GC_FLAGS(object) & IS_OBJ_HAS_GUARDS)) {
+       if (UNEXPECTED(OBJ_FLAGS(object) & IS_OBJ_HAS_GUARDS)) {
                if (EXPECTED(Z_TYPE_P(p) == IS_STRING)) {
                        zend_string_release(Z_STR_P(p));
                } else {
index a8d9d0ea2532aa5d4283229a4860d580eadf0474..633b48a2cbd2ccc8b79902ed910446fd2a3851c6 100644 (file)
@@ -48,8 +48,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_call_destructors(zend_objects_sto
                for (i = 1; i < objects->top; i++) {
                        zend_object *obj = objects->object_buckets[i];
                        if (IS_OBJ_VALID(obj)) {
-                               if (!(GC_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
-                                       GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
+                               if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
+                                       OBJ_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
 
                                        if (obj->handlers->dtor_obj
                                         && (obj->handlers->dtor_obj != zend_objects_destroy_object
@@ -74,7 +74,7 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_mark_destructed(zend_objects_stor
                        zend_object *obj = *obj_ptr;
 
                        if (IS_OBJ_VALID(obj)) {
-                               GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
+                               OBJ_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
                        }
                        obj_ptr++;
                } while (obj_ptr != end);
@@ -98,8 +98,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_
                        obj_ptr--;
                        obj = *obj_ptr;
                        if (IS_OBJ_VALID(obj)) {
-                               if (!(GC_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
-                                       GC_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
+                               if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
+                                       OBJ_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
                                        if (obj->handlers->free_obj && obj->handlers->free_obj != zend_object_std_dtor) {
                                                GC_ADDREF(obj);
                                                obj->handlers->free_obj(obj);
@@ -113,8 +113,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_
                        obj_ptr--;
                        obj = *obj_ptr;
                        if (IS_OBJ_VALID(obj)) {
-                               if (!(GC_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
-                                       GC_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
+                               if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
+                                       OBJ_FLAGS(obj) |= IS_OBJ_FREE_CALLED;
                                        if (obj->handlers->free_obj) {
                                                GC_ADDREF(obj);
                                                obj->handlers->free_obj(obj);
@@ -164,8 +164,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
        ZEND_ASSERT(IS_OBJ_VALID(EG(objects_store).object_buckets[object->handle]));
        ZEND_ASSERT(GC_REFCOUNT(object) == 0);
 
-       if (!(GC_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
-               GC_FLAGS(object) |= IS_OBJ_DESTRUCTOR_CALLED;
+       if (!(OBJ_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
+               OBJ_FLAGS(object) |= IS_OBJ_DESTRUCTOR_CALLED;
 
                if (object->handlers->dtor_obj
                 && (object->handlers->dtor_obj != zend_objects_destroy_object
@@ -181,8 +181,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
                void *ptr;
 
                EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
-               if (!(GC_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
-                       GC_FLAGS(object) |= IS_OBJ_FREE_CALLED;
+               if (!(OBJ_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
+                       OBJ_FLAGS(object) |= IS_OBJ_FREE_CALLED;
                        if (object->handlers->free_obj) {
                                GC_ADDREF(object);
                                object->handlers->free_obj(object);
index 7fd073f7ad048602c03fd1ceea49ccfa42904c02..a581c4b2090f714c5b47b845c80b229fbac66baa 100644 (file)
@@ -62,7 +62,7 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object);
 /* Called when the ctor was terminated by an exception */
 static zend_always_inline void zend_object_store_ctor_failed(zend_object *obj)
 {
-       GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
+       OBJ_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
 }
 
 #define ZEND_OBJECTS_STORE_HANDLERS 0, zend_object_std_dtor, zend_objects_destroy_object, zend_objects_clone_obj
index 7fa90fdbd11f0091d1141b0663bad3b7aabb33a6..ac814061711ba267de249f166c30d4aee1277707 100644 (file)
@@ -498,6 +498,8 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
 #define IS_OBJ_USE_GUARDS           (1<<6)
 #define IS_OBJ_HAS_GUARDS           (1<<7)
 
+#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
+
 /* Recursion protection macros must be used only for arrays and objects */
 #define GC_IS_RECURSIVE(p) \
        (GC_FLAGS(p) & GC_PROTECTED)
index ce918f1e69601f91a8dcf070c1bf1566d0d0c9fa..854623f31440cb2eeb2ec229139c21fed9fed15c 100644 (file)
@@ -90,7 +90,7 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt) /* {{{ */
 
        if (!Z_ISUNDEF(stmt->database_object_handle)
                && IS_OBJ_VALID(EG(objects_store).object_buckets[Z_OBJ_HANDLE(stmt->database_object_handle)])
-               && (!(GC_FLAGS(Z_OBJ(stmt->database_object_handle)) & IS_OBJ_FREE_CALLED))) {
+               && (!(OBJ_FLAGS(Z_OBJ(stmt->database_object_handle)) & IS_OBJ_FREE_CALLED))) {
                while (mysql_more_results(S->H->server)) {
                        MYSQL_RES *res;
                        if (mysql_next_result(S->H->server) != 0) {
index 02483e6c238fc45333fea09f637241c269fcef8d..2321d20576f6d208e9d0d278e1d7d277c448c333 100644 (file)
@@ -63,7 +63,7 @@ static int pgsql_stmt_dtor(pdo_stmt_t *stmt)
        pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data;
        zend_bool server_obj_usable = !Z_ISUNDEF(stmt->database_object_handle)
                && IS_OBJ_VALID(EG(objects_store).object_buckets[Z_OBJ_HANDLE(stmt->database_object_handle)])
-               && !(GC_FLAGS(Z_OBJ(stmt->database_object_handle)) & IS_OBJ_FREE_CALLED);
+               && !(OBJ_FLAGS(Z_OBJ(stmt->database_object_handle)) & IS_OBJ_FREE_CALLED);
 
        if (S->result) {
                /* free the resource */