Commit:    d57b278ad1f490094b0c3331cf02312b785a8a78
Author:    Felipe Pena <felipe...@gmail.com>         Sun, 3 Jun 2012 18:16:57 
-0300
Parents:   38ca8cb7a12548b44b942ddd4fb2628b70bc6612
Branches:  PHP-5.3 PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=d57b278ad1f490094b0c3331cf02312b785a8a78

Log:
- Optimize comparison between same HashTable pointer

Changed paths:
  M  Zend/zend_operators.c


Diff:
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index da11a6c..e6fe67e 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1575,7 +1575,8 @@ ZEND_API int is_identical_function(zval *result, zval 
*op1, zval *op2 TSRMLS_DC)
                                && (!memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), 
Z_STRLEN_P(op1))));
                        break;
                case IS_ARRAY:
-                       Z_LVAL_P(result) = zend_hash_compare(Z_ARRVAL_P(op1), 
Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1 TSRMLS_CC)==0;
+                       Z_LVAL_P(result) = (Z_ARRVAL_P(op1) == Z_ARRVAL_P(op2) 
||
+                               zend_hash_compare(Z_ARRVAL_P(op1), 
Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1 
TSRMLS_CC)==0);
                        break;
                case IS_OBJECT:
                        if (Z_OBJ_HT_P(op1) == Z_OBJ_HT_P(op2)) {
@@ -2029,13 +2030,13 @@ static int hash_zval_compare_function(const zval **z1, 
const zval **z2 TSRMLS_DC
 
 ZEND_API int zend_compare_symbol_tables_i(HashTable *ht1, HashTable *ht2 
TSRMLS_DC) /* {{{ */
 {
-       return zend_hash_compare(ht1, ht2, (compare_func_t) 
hash_zval_compare_function, 0 TSRMLS_CC);
+       return ht1 == ht2 ? 0 : zend_hash_compare(ht1, ht2, (compare_func_t) 
hash_zval_compare_function, 0 TSRMLS_CC);
 }
 /* }}} */
 
 ZEND_API void zend_compare_symbol_tables(zval *result, HashTable *ht1, 
HashTable *ht2 TSRMLS_DC) /* {{{ */
 {
-       ZVAL_LONG(result, zend_hash_compare(ht1, ht2, (compare_func_t) 
hash_zval_compare_function, 0 TSRMLS_CC));
+       ZVAL_LONG(result, ht1 == ht2 ? 0 : zend_hash_compare(ht1, ht2, 
(compare_func_t) hash_zval_compare_function, 0 TSRMLS_CC));
 }
 /* }}} */


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to