diff options
author | Dmitry Stogov <dmitry@php.net> | 2006-03-13 11:13:42 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2006-03-13 11:13:42 +0000 |
commit | ad10a538eefa240da0287fe96a7852ab89cb7911 (patch) | |
tree | e9e855469d5b071e419b15e7112c1c1b257e11b0 /Zend/zend_opcode.c | |
parent | d21669fc807a85aba09e4ebec0591f38a0d1674b (diff) | |
download | php-git-ad10a538eefa240da0287fe96a7852ab89cb7911.tar.gz |
Optimized cleanup loops on request shutdown
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r-- | Zend/zend_opcode.c | 16 |
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)); |