summaryrefslogtreecommitdiff
path: root/Zend/zend_opcode.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2006-03-13 11:13:42 +0000
committerDmitry Stogov <dmitry@php.net>2006-03-13 11:13:42 +0000
commitad10a538eefa240da0287fe96a7852ab89cb7911 (patch)
treee9e855469d5b071e419b15e7112c1c1b257e11b0 /Zend/zend_opcode.c
parentd21669fc807a85aba09e4ebec0591f38a0d1674b (diff)
downloadphp-git-ad10a538eefa240da0287fe96a7852ab89cb7911.tar.gz
Optimized cleanup loops on request shutdown
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r--Zend/zend_opcode.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index a71557888a..cd35202de8 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -132,8 +132,18 @@ ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC)
{
if (function->type == ZEND_USER_FUNCTION) {
zend_cleanup_op_array_data((zend_op_array *) function);
- }
- return 0;
+ return ZEND_HASH_APPLY_KEEP;
+ } else {
+ return ZEND_HASH_APPLY_STOP;
+ }
+}
+
+ZEND_API int zend_cleanup_function_data_full(zend_function *function TSRMLS_DC)
+{
+ if (function->type == ZEND_USER_FUNCTION) {
+ zend_cleanup_op_array_data((zend_op_array *) function);
+ }
+ return ZEND_HASH_APPLY_KEEP;
}
ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
@@ -142,7 +152,7 @@ ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
/* Clean all parts that can contain run-time data */
/* Note that only run-time accessed data need to be cleaned up, pre-defined data can
not contain objects and thus are not probelmatic */
- zend_hash_apply(&(*pce)->function_table, (apply_func_t) zend_cleanup_function_data TSRMLS_CC);
+ zend_hash_apply(&(*pce)->function_table, (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
(*pce)->static_members = NULL;
} else if (CE_STATIC_MEMBERS(*pce)) {
zend_hash_destroy(CE_STATIC_MEMBERS(*pce));