diff options
author | Dmitry Stogov <dmitry@zend.com> | 2019-04-09 14:38:49 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2019-04-09 14:38:49 +0300 |
commit | 5fdee9394f5481459316c0e46a9ad8e25cab6134 (patch) | |
tree | 56bcd2a61c7d2de5e863697ad2d3b4fa4199839d /Zend/zend_execute.h | |
parent | 8021d52fb6b36753ba1456acdae367c150a92e96 (diff) | |
download | php-git-5fdee9394f5481459316c0e46a9ad8e25cab6134.tar.gz |
Micro-optimization
Diffstat (limited to 'Zend/zend_execute.h')
-rw-r--r-- | Zend/zend_execute.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index b825922008..deb299abd1 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -96,20 +96,19 @@ static zend_always_inline zval* zend_assign_to_variable(zval *variable_ptr, zval if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(variable_ptr)))) { zend_bool need_copy = ZEND_CONST_COND(value_type & (IS_CONST|IS_CV), 1) || ((value_type & IS_VAR) && UNEXPECTED(ref) && GC_REFCOUNT(ref) > 1); + zend_bool ret; if (need_copy) { ZVAL_COPY(&tmp, value); value = &tmp; } - if (!zend_verify_ref_assignable_zval(Z_REF_P(variable_ptr), value, strict)) { - if (need_copy) { - Z_TRY_DELREF_P(value); - } - zval_ptr_dtor(value); - return Z_REFVAL_P(variable_ptr); - } + ret = zend_verify_ref_assignable_zval(Z_REF_P(variable_ptr), value, strict); if (need_copy) { Z_TRY_DELREF_P(value); } + if (!ret) { + zval_ptr_dtor(value); + return Z_REFVAL_P(variable_ptr); + } } variable_ptr = Z_REFVAL_P(variable_ptr); |