From: Dmitry Stogov Date: Thu, 15 Feb 2018 18:54:49 +0000 (+0300) Subject: Use Z_TYPE_INFO_REFCOUNTED() macro X-Git-Tag: php-7.3.0alpha1~419 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02aea893fb77beef88c560cc6545f820cf63bdd8;p=php Use Z_TYPE_INFO_REFCOUNTED() macro --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 60b7d8b211..5a88518449 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -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 { diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 6b905a2183..2e86a9e975 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -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 { \ diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index c34eec575f..06be17d86f 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -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); } } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 44ca3f4ef8..ad952979b3 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -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); } }