diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-01-22 09:27:48 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-01-22 09:27:48 +0000 |
commit | 71592cec0684d376df3fc91645e98fb9679edcd5 (patch) | |
tree | 7d05ba19e5e467fcab54952c23b8069275394803 /Zend/zend.c | |
parent | 2be1ae5415f3087b662ac9ba6f84bb82db59c0d2 (diff) | |
download | php-git-71592cec0684d376df3fc91645e98fb9679edcd5.tar.gz |
Added garbage collector
Diffstat (limited to 'Zend/zend.c')
-rw-r--r-- | Zend/zend.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index cdd5f9515e..93cca07559 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -74,8 +74,21 @@ static ZEND_INI_MH(OnUpdateErrorReporting) /* {{{ */ } /* }}} */ +static ZEND_INI_MH(OnUpdateGCEnabled) /* {{{ */ +{ + OnUpdateBool(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); + + if (GC_G(gc_enabled)) { + gc_init(TSRMLS_C); + } + + return SUCCESS; +} +/* }}} */ + ZEND_INI_BEGIN() ZEND_INI_ENTRY("error_reporting", NULL, ZEND_INI_ALL, OnUpdateErrorReporting) + STD_ZEND_INI_BOOLEAN("zend.enable_gc", "1", ZEND_INI_ALL, OnUpdateGCEnabled, gc_enabled, zend_gc_globals, gc_globals) STD_ZEND_INI_BOOLEAN("zend.ze1_compatibility_mode", "0", ZEND_INI_ALL, OnUpdateBool, ze1_compatibility_mode, zend_executor_globals, executor_globals) #ifdef ZEND_MULTIBYTE STD_ZEND_INI_BOOLEAN("detect_unicode", "1", ZEND_INI_ALL, OnUpdateBool, detect_unicode, zend_compiler_globals, compiler_globals) @@ -822,6 +835,7 @@ ZEND_API char *get_zend_version(void) /* {{{ */ void zend_activate(TSRMLS_D) /* {{{ */ { + gc_reset(TSRMLS_C); init_compiler(TSRMLS_C); init_executor(TSRMLS_C); startup_scanner(TSRMLS_C); @@ -871,6 +885,12 @@ void zend_deactivate(TSRMLS_D) /* {{{ */ zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC); +#ifdef ZEND_DEBUG + if (GC_G(gc_enabled) && !CG(unclean_shutdown)) { + gc_collect_cycles(TSRMLS_C); + } +#endif + zend_try { zend_ini_deactivate(TSRMLS_C); } zend_end_try(); |