]> granicus.if.org Git - php/commitdiff
Use Z_TYPE_INFO_REFCOUNTED() macro
authorDmitry Stogov <dmitry@zend.com>
Thu, 15 Feb 2018 18:54:49 +0000 (21:54 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 15 Feb 2018 18:54:49 +0000 (21:54 +0300)
Zend/zend_execute.c
Zend/zend_types.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 60b7d8b211b9e676e602d6df29c3e2dfec5876c5..5a885184497b7f42c299612a259f0e61af38e26d 100644 (file)
@@ -2142,7 +2142,7 @@ static zend_never_inline void zend_copy_extra_args(EXECUTE_DATA_D)
                        ZVAL_UNDEF(src);
                        src--;
                } while (--count);
-               if (type_flags & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) {
+               if (Z_TYPE_INFO_REFCOUNTED(type_flags)) {
                        ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
                }
        } else {
index 6b905a21839f105a2caa534135733ef366ad41d8..2e86a9e97549ecff78d8b7a4df7fe7b5228eb64b 100644 (file)
@@ -478,6 +478,8 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
 /* zval.u1.v.type_flags */
 #define IS_TYPE_REFCOUNTED                     (1<<0)
 
+#define Z_TYPE_INFO_REFCOUNTED(t)      (((t) & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)
+
 /* extended types */
 #define IS_INTERNED_STRING_EX          IS_STRING
 
@@ -549,7 +551,7 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
 #define Z_OPT_CONSTANT(zval)           (Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
 #define Z_OPT_CONSTANT_P(zval_p)       Z_OPT_CONSTANT(*(zval_p))
 
-#define Z_OPT_REFCOUNTED(zval)         ((Z_TYPE_INFO(zval) & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)
+#define Z_OPT_REFCOUNTED(zval)         Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
 #define Z_OPT_REFCOUNTED_P(zval_p)     Z_OPT_REFCOUNTED(*(zval_p))
 
 /* deprecated: (COPYABLE is the same as IS_ARRAY) */
@@ -999,7 +1001,7 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
                zend_refcounted *_gc = Z_COUNTED_P(_z2);                \
                uint32_t _t = Z_TYPE_INFO_P(_z2);                               \
                ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);                  \
-               if ((_t & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0) { \
+               if (Z_TYPE_INFO_REFCOUNTED(_t)) {                               \
                        GC_ADDREF(_gc);                                                         \
                }                                                                                               \
        } while (0)
@@ -1013,7 +1015,7 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
                if ((_t & Z_TYPE_MASK) == IS_ARRAY) {                   \
                        ZVAL_ARR(_z1, zend_array_dup((zend_array*)_gc));\
                } else {                                                                                \
-                       if ((_t & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0) { \
+                       if (Z_TYPE_INFO_REFCOUNTED(_t)) {                       \
                                GC_ADDREF(_gc);                                                 \
                        }                                                                                       \
                        ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);          \
@@ -1031,7 +1033,7 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
                zend_refcounted *_gc = Z_COUNTED_P(_z2);                                                \
                uint32_t _t = Z_TYPE_INFO_P(_z2);                                                               \
                ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);                                                  \
-               if ((_t & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0) {   \
+               if (Z_TYPE_INFO_REFCOUNTED(_t)) {                                                               \
                        if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT))) {                       \
                                GC_ADDREF(_gc);                                                                                 \
                        } else {                                                                                                        \
index c34eec575f65b843a962c677ba7dab34a0b386dc..06be17d86fe3262d2cd8dcf143fd7f5737f318e5 100644 (file)
@@ -6111,7 +6111,7 @@ ZEND_VM_C_LABEL(fe_fetch_r_exit):
                zend_refcounted *gc = Z_COUNTED_P(value);
 
                ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
-               if (EXPECTED((value_type & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)) {
+               if (EXPECTED(Z_TYPE_INFO_REFCOUNTED(value_type))) {
                        GC_ADDREF(gc);
                }
        }
index 44ca3f4ef8d5d50d839587b513655743beb50496..ad952979b3f6ae6632f9db90f44b899ec7f6abd6 100644 (file)
@@ -22428,7 +22428,7 @@ fe_fetch_r_exit:
                zend_refcounted *gc = Z_COUNTED_P(value);
 
                ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
-               if (EXPECTED((value_type & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)) {
+               if (EXPECTED(Z_TYPE_INFO_REFCOUNTED(value_type))) {
                        GC_ADDREF(gc);
                }
        }