summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-11-17 08:36:14 +0300
committerDmitry Stogov <dmitry@zend.com>2014-11-17 08:36:14 +0300
commit54fa42475120f3ab61f50732fa2d68c3af07f259 (patch)
treee3852dfa159a947a47b1c97362ab4200f7838968 /Zend/zend_execute.c
parent9e3ebd3a0d9919d75f526e2cef9bf35de8b4847f (diff)
downloadphp-git-54fa42475120f3ab61f50732fa2d68c3af07f259.tar.gz
Micro optimization
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 1551789c48..8a8cbbffaf 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -456,15 +456,15 @@ static zend_always_inline zval *_get_zval_ptr_ptr_var(uint32_t var, const zend_e
if (EXPECTED(Z_TYPE_P(ret) == IS_INDIRECT)) {
should_free->var = NULL;
- return Z_INDIRECT_P(ret);
- } else if (!Z_REFCOUNTED_P(ret) || Z_REFCOUNT_P(ret) == 1) {
- should_free->var = ret;
- return ret;
+ ret = Z_INDIRECT_P(ret);
} else {
- Z_DELREF_P(ret);
- should_free->var = NULL;
- return ret;
+ should_free->var = ret;
+ if (Z_REFCOUNTED_P(ret) && Z_REFCOUNT_P(ret) > 1) {
+ should_free->var = NULL;
+ Z_DELREF_P(ret);
+ }
}
+ return ret;
}
static inline zval *_get_zval_ptr_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type TSRMLS_DC)