com php-src: Optimized extract: ext/standard/array.c
| From: | Xinchen Hui | Date: | Fri, 16 Jan 2015 10:12:33 +0000 |
| Subject: | com php-src: Optimized extract: ext/standard/array.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-84133@lists.php.net to get a copy of this message | ||
Commit: 396e9cdb7fbb4d50eee0ed1d47a1c950f1569dda
Author: Xinchen Hui <laruence@php.net> Fri, 16 Jan 2015 18:12:33 +0800
Parents: 865749e7b15176e5f601d7a4a35f18b829fdc5c2
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=396e9cdb7fbb4d50eee0ed1d47a1c950f1569dda
Log:
Optimized extract
symbol table already be rebuilt.. no need use set_local_var
Changed paths:
M ext/standard/array.c
Diff:
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 5662dee..808992a 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1445,6 +1445,12 @@ PHP_FUNCTION(extract)
}
symbol_table = zend_rebuild_symbol_table();
+#if 0
+ if (!symbol_table) {
+ php_error_docref(NULL, E_WARNING, "failed to build symbol table");
+ return;
+ }
+#endif
ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(var_array), num_key, var_name, entry) {
zval final_name;
@@ -1534,7 +1540,7 @@ PHP_FUNCTION(extract)
}
} else {
if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
- zend_set_local_var(Z_STR(final_name), entry, 1);
+ zend_hash_update_ind(&symbol_table->ht, Z_STR(final_name), entry);
}
count++;
}