felipe                                   Sun, 10 Jul 2011 15:03:38 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=313114

Log:
- Added zend_is_auto_global_quick function

Changed paths:
    U   php/php-src/branches/PHP_5_4/Zend/zend_compile.c
    U   php/php-src/branches/PHP_5_4/Zend/zend_compile.h
    U   php/php-src/trunk/Zend/zend_compile.c
    U   php/php-src/trunk/Zend/zend_compile.h

Modified: php/php-src/branches/PHP_5_4/Zend/zend_compile.c
===================================================================
--- php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-07-10 15:00:49 UTC 
(rev 313113)
+++ php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-07-10 15:03:38 UTC 
(rev 313114)
@@ -640,7 +640,7 @@
                } else if (IS_INTERNED(Z_STRVAL(varname->u.constant))) {
                        hash = INTERNED_HASH(Z_STRVAL(varname->u.constant));
                }
-               if (!zend_is_auto_global(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len TSRMLS_CC) &&
+               if 
(!zend_is_auto_global_quick(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len, hash TSRMLS_CC) &&
                    !(varname->u.constant.value.str.len == (sizeof("this")-1) &&
                      !memcmp(varname->u.constant.value.str.val, "this", 
sizeof("this"))) &&
                    (CG(active_op_array)->last == 0 ||
@@ -670,7 +670,7 @@

        if (varname->op_type == IS_CONST) {
                CALCULATE_LITERAL_HASH(opline_ptr->op1.constant);
-               if (zend_is_auto_global(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len TSRMLS_CC)) {
+               if 
(zend_is_auto_global_quick(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len, 
Z_HASH_P(&CONSTANT(opline_ptr->op1.constant)) TSRMLS_CC)) {
                        opline_ptr->extended_value = ZEND_FETCH_GLOBAL;
                }
        }
@@ -1816,7 +1816,7 @@
                return;
        }

-       if (zend_is_auto_global(Z_STRVAL(varname->u.constant), 
Z_STRLEN(varname->u.constant) TSRMLS_CC)) {
+       if (zend_is_auto_global_quick(Z_STRVAL(varname->u.constant), 
Z_STRLEN(varname->u.constant), 0 TSRMLS_CC)) {
                zend_error(E_COMPILE_ERROR, "Cannot re-assign auto-global 
variable %s", Z_STRVAL(varname->u.constant));
        } else {
                var.op_type = IS_CV;
@@ -6182,11 +6182,12 @@
 }
 /* }}} */

-zend_bool zend_is_auto_global(const char *name, uint name_len TSRMLS_DC) /* 
{{{ */
+zend_bool zend_is_auto_global_quick(const char *name, uint name_len, ulong 
hashval TSRMLS_DC) /* {{{ */
 {
        zend_auto_global *auto_global;
+       ulong hash = hashval ? hashval : zend_hash_func(name, name_len+1);

-       if (zend_hash_find(CG(auto_globals), name, name_len+1, (void **) 
&auto_global)==SUCCESS) {
+       if (zend_hash_quick_find(CG(auto_globals), name, name_len+1, hash, 
(void **) &auto_global)==SUCCESS) {
                if (auto_global->armed) {
                        auto_global->armed = 
auto_global->auto_global_callback(auto_global->name, auto_global->name_len 
TSRMLS_CC);
                }
@@ -6196,6 +6197,12 @@
 }
 /* }}} */

+zend_bool zend_is_auto_global(const char *name, uint name_len TSRMLS_DC) /* 
{{{ */
+{
+       return zend_is_auto_global_quick(name, name_len, 0 TSRMLS_CC);
+}
+/* }}} */
+
 int zend_register_auto_global(const char *name, uint name_len, zend_bool jit, 
zend_auto_global_callback auto_global_callback TSRMLS_DC) /* {{{ */
 {
        zend_auto_global auto_global;

Modified: php/php-src/branches/PHP_5_4/Zend/zend_compile.h
===================================================================
--- php/php-src/branches/PHP_5_4/Zend/zend_compile.h    2011-07-10 15:00:49 UTC 
(rev 313113)
+++ php/php-src/branches/PHP_5_4/Zend/zend_compile.h    2011-07-10 15:03:38 UTC 
(rev 313114)
@@ -682,6 +682,7 @@
 ZEND_API int zend_register_auto_global(const char *name, uint name_len, 
zend_bool jit, zend_auto_global_callback auto_global_callback TSRMLS_DC);
 ZEND_API void zend_activate_auto_globals(TSRMLS_D);
 ZEND_API zend_bool zend_is_auto_global(const char *name, uint name_len 
TSRMLS_DC);
+ZEND_API zend_bool zend_is_auto_global_quick(const char *name, uint name_len, 
ulong hashval TSRMLS_DC);
 ZEND_API size_t zend_dirname(char *path, size_t len);

 int zendlex(znode *zendlval TSRMLS_DC);

Modified: php/php-src/trunk/Zend/zend_compile.c
===================================================================
--- php/php-src/trunk/Zend/zend_compile.c       2011-07-10 15:00:49 UTC (rev 
313113)
+++ php/php-src/trunk/Zend/zend_compile.c       2011-07-10 15:03:38 UTC (rev 
313114)
@@ -640,7 +640,7 @@
                } else if (IS_INTERNED(Z_STRVAL(varname->u.constant))) {
                        hash = INTERNED_HASH(Z_STRVAL(varname->u.constant));
                }
-               if (!zend_is_auto_global(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len TSRMLS_CC) &&
+               if 
(!zend_is_auto_global_quick(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len, hash TSRMLS_CC) &&
                    !(varname->u.constant.value.str.len == (sizeof("this")-1) &&
                      !memcmp(varname->u.constant.value.str.val, "this", 
sizeof("this"))) &&
                    (CG(active_op_array)->last == 0 ||
@@ -670,7 +670,7 @@

        if (varname->op_type == IS_CONST) {
                CALCULATE_LITERAL_HASH(opline_ptr->op1.constant);
-               if (zend_is_auto_global(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len TSRMLS_CC)) {
+               if 
(zend_is_auto_global_quick(varname->u.constant.value.str.val, 
varname->u.constant.value.str.len, 
Z_HASH_P(&CONSTANT(opline_ptr->op1.constant)) TSRMLS_CC)) {
                        opline_ptr->extended_value = ZEND_FETCH_GLOBAL;
                }
        }
@@ -1816,7 +1816,7 @@
                return;
        }

-       if (zend_is_auto_global(Z_STRVAL(varname->u.constant), 
Z_STRLEN(varname->u.constant) TSRMLS_CC)) {
+       if (zend_is_auto_global_quick(Z_STRVAL(varname->u.constant), 
Z_STRLEN(varname->u.constant), 0 TSRMLS_CC)) {
                zend_error(E_COMPILE_ERROR, "Cannot re-assign auto-global 
variable %s", Z_STRVAL(varname->u.constant));
        } else {
                var.op_type = IS_CV;
@@ -6182,11 +6182,12 @@
 }
 /* }}} */

-zend_bool zend_is_auto_global(const char *name, uint name_len TSRMLS_DC) /* 
{{{ */
+zend_bool zend_is_auto_global_quick(const char *name, uint name_len, ulong 
hashval TSRMLS_DC) /* {{{ */
 {
        zend_auto_global *auto_global;
+       ulong hash = hashval ? hashval : zend_hash_func(name, name_len+1);

-       if (zend_hash_find(CG(auto_globals), name, name_len+1, (void **) 
&auto_global)==SUCCESS) {
+       if (zend_hash_quick_find(CG(auto_globals), name, name_len+1, hash, 
(void **) &auto_global)==SUCCESS) {
                if (auto_global->armed) {
                        auto_global->armed = 
auto_global->auto_global_callback(auto_global->name, auto_global->name_len 
TSRMLS_CC);
                }
@@ -6196,6 +6197,12 @@
 }
 /* }}} */

+zend_bool zend_is_auto_global(const char *name, uint name_len TSRMLS_DC) /* 
{{{ */
+{
+       return zend_is_auto_global_quick(name, name_len, 0 TSRMLS_CC);
+}
+/* }}} */
+
 int zend_register_auto_global(const char *name, uint name_len, zend_bool jit, 
zend_auto_global_callback auto_global_callback TSRMLS_DC) /* {{{ */
 {
        zend_auto_global auto_global;

Modified: php/php-src/trunk/Zend/zend_compile.h
===================================================================
--- php/php-src/trunk/Zend/zend_compile.h       2011-07-10 15:00:49 UTC (rev 
313113)
+++ php/php-src/trunk/Zend/zend_compile.h       2011-07-10 15:03:38 UTC (rev 
313114)
@@ -682,6 +682,7 @@
 ZEND_API int zend_register_auto_global(const char *name, uint name_len, 
zend_bool jit, zend_auto_global_callback auto_global_callback TSRMLS_DC);
 ZEND_API void zend_activate_auto_globals(TSRMLS_D);
 ZEND_API zend_bool zend_is_auto_global(const char *name, uint name_len 
TSRMLS_DC);
+ZEND_API zend_bool zend_is_auto_global_quick(const char *name, uint name_len, 
ulong hashval TSRMLS_DC);
 ZEND_API size_t zend_dirname(char *path, size_t len);

 int zendlex(znode *zendlval TSRMLS_DC);

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

Reply via email to