summaryrefslogtreecommitdiff
path: root/Zend/zend_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_types.h')
-rw-r--r--Zend/zend_types.h30
1 files changed, 10 insertions, 20 deletions
diff --git a/Zend/zend_types.h b/Zend/zend_types.h
index 82cf20f1b5..da6792ba7b 100644
--- a/Zend/zend_types.h
+++ b/Zend/zend_types.h
@@ -1130,7 +1130,7 @@ static zend_always_inline uint32_t zval_gc_info(uint32_t gc_type_info) {
#endif
#if ZEND_RC_DEBUG
-extern ZEND_API zend_bool zend_rc_debug;
+extern ZEND_API bool zend_rc_debug;
# define ZEND_RC_MOD_CHECK(p) do { \
if (zend_rc_debug && zval_gc_type((p)->u.type_info) != IS_OBJECT) { \
ZEND_ASSERT(!(zval_gc_flags((p)->u.type_info) & GC_IMMUTABLE)); \
@@ -1346,27 +1346,22 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
} while (0)
#define SEPARATE_ARRAY(zv) do { \
- zval *_zv = (zv); \
- zend_array *_arr = Z_ARR_P(_zv); \
+ zval *__zv = (zv); \
+ zend_array *_arr = Z_ARR_P(__zv); \
if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) { \
- if (Z_REFCOUNTED_P(_zv)) { \
+ if (Z_REFCOUNTED_P(__zv)) { \
GC_DELREF(_arr); \
} \
- ZVAL_ARR(_zv, zend_array_dup(_arr)); \
- } \
- } while (0)
-
-#define SEPARATE_ZVAL_IF_NOT_REF(zv) do { \
- zval *__zv = (zv); \
- if (Z_TYPE_P(__zv) == IS_ARRAY) { \
- SEPARATE_ARRAY(__zv); \
+ ZVAL_ARR(__zv, zend_array_dup(_arr)); \
} \
} while (0)
#define SEPARATE_ZVAL_NOREF(zv) do { \
zval *_zv = (zv); \
ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE); \
- SEPARATE_ZVAL_IF_NOT_REF(_zv); \
+ if (Z_TYPE_P(_zv) == IS_ARRAY) { \
+ SEPARATE_ARRAY(_zv); \
+ } \
} while (0)
#define SEPARATE_ZVAL(zv) do { \
@@ -1384,13 +1379,8 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
break; \
} \
} \
- SEPARATE_ZVAL_IF_NOT_REF(_zv); \
- } while (0)
-
-#define SEPARATE_ARG_IF_REF(varptr) do { \
- ZVAL_DEREF(varptr); \
- if (Z_REFCOUNTED_P(varptr)) { \
- Z_ADDREF_P(varptr); \
+ if (Z_TYPE_P(_zv) == IS_ARRAY) { \
+ SEPARATE_ARRAY(_zv); \
} \
} while (0)