diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-03-17 18:53:19 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2015-03-17 18:53:19 +0300 |
commit | 4d4a5336f149fc0d49ac8fa10f0f85fa364366ac (patch) | |
tree | 7a496c53ce0989c5aac1d396151713d7d52a80e8 /Zend/zend_operators.c | |
parent | fb4b7069842491eb66272587422a1f61d41eb869 (diff) | |
download | php-git-4d4a5336f149fc0d49ac8fa10f0f85fa364366ac.tar.gz |
Embed "fast" operator functions (add, sub, increment, etc) into executor with additional optimizations
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 7c23489864..d8e92a97ad 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -2162,13 +2162,7 @@ ZEND_API int ZEND_FASTCALL increment_function(zval *op1) /* {{{ */ try_again: switch (Z_TYPE_P(op1)) { case IS_LONG: - if (Z_LVAL_P(op1) == ZEND_LONG_MAX) { - /* switch to double */ - double d = (double)Z_LVAL_P(op1); - ZVAL_DOUBLE(op1, d+1); - } else { - Z_LVAL_P(op1)++; - } + fast_long_increment_function(op1); break; case IS_DOUBLE: Z_DVAL_P(op1) = Z_DVAL_P(op1) + 1; @@ -2211,7 +2205,7 @@ try_again: val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv); Z_ADDREF_P(val); - fast_increment_function(val); + increment_function(val); Z_OBJ_HANDLER_P(op1, set)(op1, val); zval_ptr_dtor(val); } else if (Z_OBJ_HANDLER_P(op1, do_operation)) { @@ -2243,12 +2237,7 @@ ZEND_API int ZEND_FASTCALL decrement_function(zval *op1) /* {{{ */ try_again: switch (Z_TYPE_P(op1)) { case IS_LONG: - if (Z_LVAL_P(op1) == ZEND_LONG_MIN) { - double d = (double)Z_LVAL_P(op1); - ZVAL_DOUBLE(op1, d-1); - } else { - Z_LVAL_P(op1)--; - } + fast_long_decrement_function(op1); break; case IS_DOUBLE: Z_DVAL_P(op1) = Z_DVAL_P(op1) - 1; @@ -2284,7 +2273,7 @@ try_again: val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv); Z_ADDREF_P(val); - fast_decrement_function(val); + decrement_function(val); Z_OBJ_HANDLER_P(op1, set)(op1, val); zval_ptr_dtor(val); } else if (Z_OBJ_HANDLER_P(op1, do_operation)) { |