summaryrefslogtreecommitdiff
path: root/Zend/zend_API.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-06-12 12:33:23 +0300
committerDmitry Stogov <dmitry@zend.com>2015-06-12 12:33:23 +0300
commit8e10e8f921101e0787c8228d257107a204de3e36 (patch)
tree35bad438a9a49a94a7f0b1e061538e03a49e2b78 /Zend/zend_API.h
parent730d7b8fcad30addc80d685e046b5f05bb3d0190 (diff)
downloadphp-git-8e10e8f921101e0787c8228d257107a204de3e36.tar.gz
Avoid zval duplication in ZVAL_ZVAL() macro (it was necessary only in few places).
Switch from ZVAL_ZVAL() to simpler macros where possible (it makes sense to review remaining places)
Diffstat (limited to 'Zend/zend_API.h')
-rw-r--r--Zend/zend_API.h35
1 files changed, 10 insertions, 25 deletions
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 7de97ff336..b01b041859 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -593,20 +593,17 @@ END_EXTERN_C()
zval *__z = (z); \
zval *__zv = (zv); \
if (EXPECTED(!Z_ISREF_P(__zv))) { \
- ZVAL_COPY_VALUE(__z, __zv); \
- } else { \
- ZVAL_COPY_VALUE(__z, \
- Z_REFVAL_P(__zv)); \
- } \
- if (copy) { \
- zval_opt_copy_ctor(__z); \
- } \
- if (dtor) { \
- if (!copy) { \
- ZVAL_NULL(__zv); \
+ if (copy && !dtor) { \
+ ZVAL_COPY(__z, __zv); \
+ } else { \
+ ZVAL_COPY_VALUE(__z, __zv); \
+ } \
+ } else { \
+ ZVAL_COPY(__z, Z_REFVAL_P(__zv)); \
+ if (dtor || !copy) { \
+ zval_ptr_dtor(__zv); \
} \
- zval_ptr_dtor(__zv); \
- } \
+ } \
} while (0)
#define RETVAL_BOOL(b) ZVAL_BOOL(return_value, b)
@@ -645,18 +642,6 @@ END_EXTERN_C()
#define RETURN_FALSE { RETVAL_FALSE; return; }
#define RETURN_TRUE { RETVAL_TRUE; return; }
-#define RETVAL_ZVAL_FAST(z) do { \
- zval *_z = (z); \
- if (Z_ISREF_P(_z)) { \
- RETVAL_ZVAL(_z, 1, 0); \
- } else { \
- zval_ptr_dtor(return_value); \
- ZVAL_COPY(return_value, _z); \
- } \
-} while (0)
-
-#define RETURN_ZVAL_FAST(z) { RETVAL_ZVAL_FAST(z); return; }
-
#define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties((p)) : NULL)))
#define ZVAL_IS_NULL(z) (Z_TYPE_P(z) == IS_NULL)