]> granicus.if.org Git - php/commitdiff
Optimized for fast path
authorDmitry Stogov <dmitry@zend.com>
Mon, 9 Jun 2014 20:15:44 +0000 (00:15 +0400)
committerDmitry Stogov <dmitry@zend.com>
Mon, 9 Jun 2014 20:15:44 +0000 (00:15 +0400)
ext/standard/array.c

index 5446bb5f5aa3a1044dfbaa0781b4249474f737d6..b8b57d7cf49bc95be6cc41dc00cec0c07b895c56 100644 (file)
@@ -197,12 +197,13 @@ static int php_array_key_compare(const void *a, const void *b TSRMLS_DC) /* {{{
                return 0;
        }
 
-       if (Z_TYPE(result) == IS_DOUBLE) {
+       if (EXPECTED(Z_TYPE(result) == IS_LONG)) {
+               return ZEND_NORMALIZE_BOOL(Z_LVAL(result));
+       } else if (Z_TYPE(result) == IS_DOUBLE) {
                return ZEND_NORMALIZE_BOOL(Z_DVAL(result));
        }
 
-       convert_to_long(&result);
-       return ZEND_NORMALIZE_BOOL(Z_LVAL(result));
+       return ZEND_NORMALIZE_BOOL(zval_get_long(&result));
 }
 /* }}} */
 
@@ -372,12 +373,13 @@ static int php_array_data_compare(const void *a, const void *b TSRMLS_DC) /* {{{
                return 0;
        }
 
-       if (Z_TYPE(result) == IS_DOUBLE) {
+       if (EXPECTED(Z_TYPE(result) == IS_LONG)) {
+               return ZEND_NORMALIZE_BOOL(Z_LVAL(result));
+       } else if (Z_TYPE(result) == IS_DOUBLE) {
                return ZEND_NORMALIZE_BOOL(Z_DVAL(result));
        }
 
-       convert_to_long(&result);
-       return ZEND_NORMALIZE_BOOL(Z_LVAL(result));
+       return ZEND_NORMALIZE_BOOL(zval_get_long(&result));
 }
 /* }}} */