svn: /php/php-src/ branches/PHP_5_4/Zend/zend_compile.c branches/PHP_5_4/Zend/zend_compile.h trunk/Zend/zend_compile.c trunk/Zend/zend_compile.h
| From: | Felipe Pena | Date: | Sun, 10 Jul 2011 15:03:38 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_4/Zend/zend_compile.c branches/PHP_5_4/Zend/zend_compile.h trunk/Zend/zend_compile.c trunk/Zend/zend_compile.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-65449@lists.php.net to get a copy of this message | ||
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);