diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-04-03 16:53:30 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-03 16:53:30 +0400 |
| commit | 58871730c84b736b750b9dca681a8246feacf443 (patch) | |
| tree | 72dc47db8801bbfcdca05b9fd130b0e09c31976c /Zend/zend_execute.c | |
| parent | 76cc99fe60d1e446a0250b4d778f02bcdbd7fc09 (diff) | |
| download | php-git-58871730c84b736b750b9dca681a8246feacf443.tar.gz | |
ASSIGN_REF optimization
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index b0799ef1c3..c4d2297a08 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -501,16 +501,13 @@ static inline zval *_get_obj_zval_ptr(int op_type, znode_op *op, const zend_exec return get_zval_ptr(op_type, op, execute_data, should_free, type); } -static void zend_assign_to_variable_reference(zval *variable_ptr, zval *value_ptr TSRMLS_DC) +static inline void zend_assign_to_variable_reference(zval *variable_ptr, zval *value_ptr TSRMLS_DC) { - if (variable_ptr == &EG(error_zval) || value_ptr == &EG(error_zval)) { - ZVAL_NULL(variable_ptr); - } else if (EXPECTED(variable_ptr != value_ptr)) { - zval tmp; + if (EXPECTED(variable_ptr != value_ptr)) { SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); - ZVAL_COPY(&tmp, value_ptr); + Z_ADDREF_P(value_ptr); zval_ptr_dtor(variable_ptr); - ZVAL_COPY_VALUE(variable_ptr, &tmp); + ZVAL_COPY_VALUE(variable_ptr, value_ptr); } else if (!Z_ISREF_P(variable_ptr)) { ZVAL_NEW_REF(variable_ptr, variable_ptr); } |
