dmitry          Tue Jan 22 09:27:50 2008 UTC

  Added files:                 (Branch: PHP_5_3)
    /ZendEngine2        zend_gc.c zend_gc.h 
    /ZendEngine2/tests  gc_001.phpt gc_002.phpt gc_003.phpt gc_004.phpt 
                        gc_005.phpt gc_006.phpt gc_007.phpt gc_008.phpt 
                        gc_009.phpt gc_010.phpt gc_011.phpt gc_012.phpt 
                        gc_013.phpt gc_014.phpt gc_015.phpt gc_016.phpt 
                        gc_017.phpt gc_018.phpt gc_019.phpt gc_020.phpt 
                        gc_021.phpt gc_022.phpt gc_023.phpt gc_024.phpt 
                        gc_025.phpt gc_026.phpt 

  Modified files:              
    /php-src    NEWS configure.in 
    /ZendEngine2        zend.c zend.h zend_builtin_functions.c zend_execute.c 
                        zend_execute_API.c zend_objects_API.c 
                        zend_objects_API.h zend_operators.c zend_vm_def.h 
                        zend_vm_execute.h 
    /php-src/main       main.c 
  Log:
  Added garbage collector
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.82&r2=1.2027.2.547.2.965.2.83&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.82 
php-src/NEWS:1.2027.2.547.2.965.2.83
--- php-src/NEWS:1.2027.2.547.2.965.2.82        Mon Jan 21 21:55:54 2008
+++ php-src/NEWS        Tue Jan 22 09:27:46 2008
@@ -1,6 +1,7 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 20??, PHP 5.3.0
+- Added garbage collector. (David Wang, Dmitry).
 - Added new date/time functionality:
 
   * date_parse_from_format(): Parse date/time strings according to a format.
http://cvs.php.net/viewvc.cgi/php-src/configure.in?r1=1.579.2.52.2.77.2.6&r2=1.579.2.52.2.77.2.7&diff_format=u
Index: php-src/configure.in
diff -u php-src/configure.in:1.579.2.52.2.77.2.6 
php-src/configure.in:1.579.2.52.2.77.2.7
--- php-src/configure.in:1.579.2.52.2.77.2.6    Tue Nov  6 11:50:51 2007
+++ php-src/configure.in        Tue Jan 22 09:27:46 2008
@@ -1,4 +1,4 @@
-## $Id: configure.in,v 1.579.2.52.2.77.2.6 2007/11/06 11:50:51 helly Exp $ -*- 
autoconf -*-
+## $Id: configure.in,v 1.579.2.52.2.77.2.7 2008/01/22 09:27:46 dmitry Exp $ 
-*- autoconf -*-
 dnl ## Process this file with autoconf to produce a configure script.
 
 divert(1)
@@ -1326,7 +1326,7 @@
     zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \
     zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \
     zend_ini.c zend_qsort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \
-    zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c)
+    zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c 
zend_gc.c)
 
 if test -r "$abs_srcdir/Zend/zend_objects.c"; then
   PHP_ADD_SOURCES(Zend, zend_objects.c zend_object_handlers.c 
zend_objects_API.c \
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?r1=1.308.2.12.2.35.2.4&r2=1.308.2.12.2.35.2.5&diff_format=u
Index: ZendEngine2/zend.c
diff -u ZendEngine2/zend.c:1.308.2.12.2.35.2.4 
ZendEngine2/zend.c:1.308.2.12.2.35.2.5
--- ZendEngine2/zend.c:1.308.2.12.2.35.2.4      Mon Dec 31 07:17:03 2007
+++ ZendEngine2/zend.c  Tue Jan 22 09:27:46 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend.c,v 1.308.2.12.2.35.2.4 2007/12/31 07:17:03 sebastian Exp $ */
+/* $Id: zend.c,v 1.308.2.12.2.35.2.5 2008/01/22 09:27:46 dmitry Exp $ */
 
 #include "zend.h"
 #include "zend_extensions.h"
@@ -74,8 +74,21 @@
 }
 /* }}} */
 
+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 @@
 
 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 @@
 
        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();
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?r1=1.293.2.11.2.9.2.15&r2=1.293.2.11.2.9.2.16&diff_format=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.293.2.11.2.9.2.15 
ZendEngine2/zend.h:1.293.2.11.2.9.2.16
--- ZendEngine2/zend.h:1.293.2.11.2.9.2.15      Mon Dec 31 07:17:04 2007
+++ ZendEngine2/zend.h  Tue Jan 22 09:27:46 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend.h,v 1.293.2.11.2.9.2.15 2007/12/31 07:17:04 sebastian Exp $ */
+/* $Id: zend.h,v 1.293.2.11.2.9.2.16 2008/01/22 09:27:46 dmitry Exp $ */
 
 #ifndef ZEND_H
 #define ZEND_H
@@ -709,6 +709,7 @@
 
 #define ZEND_MAX_RESERVED_RESOURCES    4
 
+#include "zend_gc.h"
 #include "zend_operators.h"
 #include "zend_variables.h"
 
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.277.2.12.2.25.2.7&r2=1.277.2.12.2.25.2.8&diff_format=u
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.25.2.7 
ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.25.2.8
--- ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.25.2.7    Mon Dec 31 
07:17:04 2007
+++ ZendEngine2/zend_builtin_functions.c        Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.25.2.7 2007/12/31 07:17:04 
sebastian Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.25.2.8 2008/01/22 09:27:47 
dmitry Exp $ */
 
 #include "zend.h"
 #include "zend_API.h"
@@ -85,6 +85,10 @@
 static ZEND_FUNCTION(zend_thread_id);
 #endif
 #endif
+static ZEND_FUNCTION(gc_collect_cycles);
+static ZEND_FUNCTION(gc_enabled);
+static ZEND_FUNCTION(gc_enable);
+static ZEND_FUNCTION(gc_disable);
 
 #include "zend_arg_defs.c"
 
@@ -148,6 +152,10 @@
        ZEND_FE(zend_thread_id,         NULL)
 #endif
 #endif
+       ZEND_FE(gc_collect_cycles, NULL)
+       ZEND_FE(gc_enabled, NULL)
+       ZEND_FE(gc_enable, NULL)
+       ZEND_FE(gc_disable, NULL)
        { NULL, NULL, NULL }
 };
 
@@ -166,6 +174,38 @@
 }
 /* }}} */
 
+/* {{{ proto int gc_collect_cycles(void)
+   Forces collection of any existing garbage cycles.
+   Returns number of freed zvals */
+ZEND_FUNCTION(gc_collect_cycles)
+{
+       RETURN_LONG(gc_collect_cycles(TSRMLS_C));
+}
+/* }}} */
+
+/* {{{ proto void gc_enabled(void)
+   Returns status of the circular reference collector */
+ZEND_FUNCTION(gc_enabled)
+{
+       RETURN_BOOL(GC_G(gc_enabled));
+}
+/* }}} */
+
+/* {{{ proto void gc_enable(void)
+   Activates the circular reference collector */
+ZEND_FUNCTION(gc_enable)
+{
+       zend_alter_ini_entry("zend.enable_gc", sizeof("zend.enable_gc"), "1", 
sizeof("1")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
+}
+/* }}} */
+
+/* {{{ proto void gc_disable(void)
+   Deactivates the circular reference collector */
+ZEND_FUNCTION(gc_disable)
+{
+       zend_alter_ini_entry("zend.enable_gc", sizeof("zend.enable_gc"), "0", 
sizeof("0")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
+}
+/* }}} */
 
 /* {{{ proto int func_num_args(void)
    Get the number of arguments that were passed to the function */
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.c?r1=1.716.2.12.2.24.2.15&r2=1.716.2.12.2.24.2.16&diff_format=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.15 
ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.16
--- ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.15     Mon Jan 21 19:39:55 2008
+++ ZendEngine2/zend_execute.c  Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute.c,v 1.716.2.12.2.24.2.15 2008/01/21 19:39:55 dmitry Exp $ 
*/
+/* $Id: zend_execute.c,v 1.716.2.12.2.24.2.16 2008/01/22 09:27:47 dmitry Exp $ 
*/
 
 #define ZEND_INTENSIVE_DEBUGGING 0
 
@@ -64,7 +64,7 @@
 
 #define TEMP_VAR_STACK_LIMIT 2000
 
-static inline void zend_pzval_unlock_func(zval *z, zend_free_op *should_free, 
int unref)
+static inline void zend_pzval_unlock_func(zval *z, zend_free_op *should_free, 
int unref TSRMLS_DC)
 {
        if (!Z_DELREF_P(z)) {
                Z_SET_REFCOUNT_P(z, 1);
@@ -76,19 +76,21 @@
                if (unref && Z_ISREF_P(z) && Z_REFCOUNT_P(z) == 1) {
                        Z_UNSET_ISREF_P(z);
                }
+               GC_ZVAL_CHECK_POSSIBLE_ROOT(z);
        }
 }
 
 static inline void zend_pzval_unlock_free_func(zval *z)
 {
        if (!Z_DELREF_P(z)) {
+               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                zval_dtor(z);
                safe_free_zval_ptr(z);
        }
 }
 
-#define PZVAL_UNLOCK(z, f) zend_pzval_unlock_func(z, f, 1)
-#define PZVAL_UNLOCK_EX(z, f, u) zend_pzval_unlock_func(z, f, u)
+#define PZVAL_UNLOCK(z, f) zend_pzval_unlock_func(z, f, 1 TSRMLS_CC)
+#define PZVAL_UNLOCK_EX(z, f, u) zend_pzval_unlock_func(z, f, u TSRMLS_CC)
 #define PZVAL_UNLOCK_FREE(z) zend_pzval_unlock_free_func(z)
 #define PZVAL_LOCK(z) Z_ADDREF_P((z))
 #define RETURN_VALUE_UNUSED(pzn)       (((pzn)->u.EA.type & EXT_TYPE_UNUSED))
@@ -777,6 +779,7 @@
                                } else {
                                        Z_ADDREF_P(value);
                                        *variable_ptr_ptr = value;
+                                       
GC_REMOVE_ZVAL_FROM_BUFFER(variable_ptr);
                                        zendi_zval_dtor(*variable_ptr);
                                        safe_free_zval_ptr(variable_ptr);
                                        return value;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.331.2.20.2.24.2.20&r2=1.331.2.20.2.24.2.21&diff_format=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.20 
ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.21
--- ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.20 Mon Jan 21 19:39:55 2008
+++ ZendEngine2/zend_execute_API.c      Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.20 2008/01/21 19:39:55 dmitry 
Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.21 2008/01/22 09:27:47 dmitry 
Exp $ */
 
 #include <stdio.h>
 #include <signal.h>
@@ -418,17 +418,22 @@
 #endif
        Z_DELREF_PP(zval_ptr);
        if (Z_REFCOUNT_PP(zval_ptr) == 0) {
+               GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
                zval_dtor(*zval_ptr);
                safe_free_zval_ptr_rel(*zval_ptr ZEND_FILE_LINE_RELAY_CC 
ZEND_FILE_LINE_CC);
-       } else if (Z_REFCOUNT_PP(zval_ptr) == 1) {
-               if ((*zval_ptr)->type == IS_OBJECT) {
-                       TSRMLS_FETCH();
+       } else {
+               TSRMLS_FETCH();
 
-                       if (EG(ze1_compatibility_mode)) {
-                               return;
+               if (Z_REFCOUNT_PP(zval_ptr) == 1) {
+                       if ((*zval_ptr)->type == IS_OBJECT) {
+                               if (EG(ze1_compatibility_mode)) {
+                                       return;
+                               }
                        }
+                       Z_UNSET_ISREF_PP(zval_ptr);
                }
-               Z_UNSET_ISREF_PP(zval_ptr);
+
+               GC_ZVAL_CHECK_POSSIBLE_ROOT(*zval_ptr);
        }
 }
 /* }}} */
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_objects_API.c?r1=1.47.2.6.2.6.2.2&r2=1.47.2.6.2.6.2.3&diff_format=u
Index: ZendEngine2/zend_objects_API.c
diff -u ZendEngine2/zend_objects_API.c:1.47.2.6.2.6.2.2 
ZendEngine2/zend_objects_API.c:1.47.2.6.2.6.2.3
--- ZendEngine2/zend_objects_API.c:1.47.2.6.2.6.2.2     Mon Dec 31 07:17:04 2007
+++ ZendEngine2/zend_objects_API.c      Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_objects_API.c,v 1.47.2.6.2.6.2.2 2007/12/31 07:17:04 sebastian 
Exp $ */
+/* $Id: zend_objects_API.c,v 1.47.2.6.2.6.2.3 2008/01/22 09:27:47 dmitry Exp $ 
*/
 
 #include "zend.h"
 #include "zend_globals.h"
@@ -84,6 +84,8 @@
                if (objects->object_buckets[i].valid) {
                        struct _store_object *obj = 
&objects->object_buckets[i].bucket.obj;
 
+                       GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
+
                        objects->object_buckets[i].valid = 0;
                        if (obj->free_storage) {
                                obj->free_storage(obj->object TSRMLS_CC);
@@ -116,6 +118,7 @@
        EG(objects_store).object_buckets[handle].valid = 1;
 
        obj->refcount = 1;
+       GC_OBJ_INIT(obj);
        obj->object = object;
        obj->dtor = 
dtor?dtor:(zend_objects_store_dtor_t)zend_objects_destroy_object;
        obj->free_storage = free_storage;
@@ -167,6 +170,8 @@
        Z_ADDREF_P(zobject);
        zend_objects_store_del_ref_by_handle(handle TSRMLS_CC);
        Z_DELREF_P(zobject);
+
+       GC_ZOBJ_CHECK_POSSIBLE_ROOT(zobject);
 }
 
 /*
@@ -201,6 +206,7 @@
                                }
                        }
                        if (obj->refcount == 1) {
+                               GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
                                if (obj->free_storage) {
                                        zend_try {
                                                obj->free_storage(obj->object 
TSRMLS_CC);
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_objects_API.h?r1=1.20.2.1.2.4.2.1&r2=1.20.2.1.2.4.2.2&diff_format=u
Index: ZendEngine2/zend_objects_API.h
diff -u ZendEngine2/zend_objects_API.h:1.20.2.1.2.4.2.1 
ZendEngine2/zend_objects_API.h:1.20.2.1.2.4.2.2
--- ZendEngine2/zend_objects_API.h:1.20.2.1.2.4.2.1     Mon Dec 31 07:17:04 2007
+++ ZendEngine2/zend_objects_API.h      Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_objects_API.h,v 1.20.2.1.2.4.2.1 2007/12/31 07:17:04 sebastian 
Exp $ */
+/* $Id: zend_objects_API.h,v 1.20.2.1.2.4.2.2 2008/01/22 09:27:47 dmitry Exp $ 
*/
 
 #ifndef ZEND_OBJECTS_API_H
 #define ZEND_OBJECTS_API_H
@@ -38,6 +38,7 @@
                        zend_objects_free_object_storage_t free_storage;
                        zend_objects_store_clone_t clone;
                        zend_uint refcount;
+                       gc_root_buffer *buffered;
                } obj;
                struct {
                        int next;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_operators.c?r1=1.208.2.4.2.23.2.7&r2=1.208.2.4.2.23.2.8&diff_format=u
Index: ZendEngine2/zend_operators.c
diff -u ZendEngine2/zend_operators.c:1.208.2.4.2.23.2.7 
ZendEngine2/zend_operators.c:1.208.2.4.2.23.2.8
--- ZendEngine2/zend_operators.c:1.208.2.4.2.23.2.7     Mon Jan 21 19:10:25 2008
+++ ZendEngine2/zend_operators.c        Tue Jan 22 09:27:47 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_operators.c,v 1.208.2.4.2.23.2.7 2008/01/21 19:10:25 dmitry Exp $ 
*/
+/* $Id: zend_operators.c,v 1.208.2.4.2.23.2.8 2008/01/22 09:27:47 dmitry Exp $ 
*/
 
 #include <ctype.h>
 
@@ -1352,6 +1352,7 @@
 static inline void zend_free_obj_get_result(zval *op)
 {
        if (Z_REFCOUNT_P(op) == 0) {
+               GC_REMOVE_ZVAL_FROM_BUFFER(op);
                zval_dtor(op);
                FREE_ZVAL(op);
        } else {
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_def.h?r1=1.59.2.29.2.48.2.28&r2=1.59.2.29.2.48.2.29&diff_format=u
Index: ZendEngine2/zend_vm_def.h
diff -u ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.28 
ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.29
--- ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.28       Mon Jan 21 14:22:58 2008
+++ ZendEngine2/zend_vm_def.h   Tue Jan 22 09:27:47 2008
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_vm_def.h,v 1.59.2.29.2.48.2.28 2008/01/21 14:22:58 dmitry Exp $ */
+/* $Id: zend_vm_def.h,v 1.59.2.29.2.48.2.29 2008/01/22 09:27:47 dmitry Exp $ */
 
 /* If you change this file, please regenerate the zend_vm_execute.h and
  * zend_vm_opcodes.h files by running:
@@ -350,6 +350,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -588,6 +589,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -678,6 +680,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -1227,6 +1230,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_execute.h?r1=1.62.2.30.2.49.2.29&r2=1.62.2.30.2.49.2.30&diff_format=u
Index: ZendEngine2/zend_vm_execute.h
diff -u ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.29 
ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.30
--- ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.29   Mon Jan 21 14:22:59 2008
+++ ZendEngine2/zend_vm_execute.h       Tue Jan 22 09:27:47 2008
@@ -8850,6 +8850,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -9087,6 +9088,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -9177,6 +9179,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -9407,6 +9410,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -10589,6 +10593,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -10827,6 +10832,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -10917,6 +10923,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -11147,6 +11154,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -12260,6 +12268,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -12498,6 +12507,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -12588,6 +12598,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -12818,6 +12829,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -13734,6 +13746,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -14537,6 +14550,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -14774,6 +14788,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -14864,6 +14879,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -15094,6 +15110,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -16087,6 +16104,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -16323,6 +16341,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -16413,6 +16432,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -16492,6 +16512,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -17153,6 +17174,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -17390,6 +17412,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -17480,6 +17503,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -17559,6 +17583,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -18149,6 +18174,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -18386,6 +18412,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -18476,6 +18503,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -18555,6 +18583,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -19145,6 +19174,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -19412,6 +19442,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -19648,6 +19679,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -19738,6 +19770,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -19817,6 +19850,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -21887,6 +21921,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -22123,6 +22158,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -22213,6 +22249,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -22442,6 +22479,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -23453,6 +23491,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -23690,6 +23729,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -23780,6 +23820,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -24009,6 +24050,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -25023,6 +25065,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -25260,6 +25303,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -25350,6 +25394,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -25579,6 +25624,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
@@ -26395,6 +26441,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -27107,6 +27154,7 @@
                                        zval *value = Z_OBJ_HT_P(z)->get(z 
TSRMLS_CC);
 
                                        if (Z_REFCOUNT_P(z) == 0) {
+                                               GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                                zval_dtor(z);
                                                FREE_ZVAL(z);
                                        }
@@ -27343,6 +27391,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -27433,6 +27482,7 @@
                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
 
                                if (Z_REFCOUNT_P(z) == 0) {
+                                       GC_REMOVE_ZVAL_FROM_BUFFER(z);
                                        zval_dtor(z);
                                        FREE_ZVAL(z);
                                }
@@ -27662,6 +27712,7 @@
 
                if (RETURN_VALUE_UNUSED(&opline->result)) {
                        if (Z_REFCOUNT_P(retval) == 0) {
+                               GC_REMOVE_ZVAL_FROM_BUFFER(retval);
                                zval_dtor(retval);
                                FREE_ZVAL(retval);
                        }
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.640.2.23.2.57.2.6&r2=1.640.2.23.2.57.2.7&diff_format=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.640.2.23.2.57.2.6 
php-src/main/main.c:1.640.2.23.2.57.2.7
--- php-src/main/main.c:1.640.2.23.2.57.2.6     Mon Dec 31 07:17:17 2007
+++ php-src/main/main.c Tue Jan 22 09:27:48 2008
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: main.c,v 1.640.2.23.2.57.2.6 2007/12/31 07:17:17 sebastian Exp $ */
+/* $Id: main.c,v 1.640.2.23.2.57.2.7 2008/01/22 09:27:48 dmitry Exp $ */
 
 /* {{{ includes
  */
@@ -1703,6 +1703,8 @@
        ts_allocate_id(&php_win32_core_globals_id, 
sizeof(php_win32_core_globals), (ts_allocate_ctor) php_win32_core_globals_ctor, 
(ts_allocate_dtor) php_win32_core_globals_dtor);
 #endif
 #endif
+       gc_globals_ctor(TSRMLS_C);
+
        EG(bailout) = NULL;
        EG(error_reporting) = E_ALL & ~E_NOTICE;
 
@@ -1904,6 +1906,7 @@
        zend_ini_shutdown(TSRMLS_C);
        shutdown_memory_manager(CG(unclean_shutdown), 1 TSRMLS_CC);
        core_globals_dtor(&core_globals TSRMLS_CC);
+       gc_globals_dtor(TSRMLS_C);
 #else
        zend_ini_global_shutdown(TSRMLS_C);
        ts_free_id(core_globals_id);

http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_gc.c?view=markup&rev=1.1
Index: ZendEngine2/zend_gc.c
+++ ZendEngine2/zend_gc.c

http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_gc.h?view=markup&rev=1.1
Index: ZendEngine2/zend_gc.h
+++ ZendEngine2/zend_gc.h

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_001.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_001.phpt
+++ ZendEngine2/tests/gc_001.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_002.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_002.phpt
+++ ZendEngine2/tests/gc_002.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_003.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_003.phpt
+++ ZendEngine2/tests/gc_003.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_004.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_004.phpt
+++ ZendEngine2/tests/gc_004.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_005.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_005.phpt
+++ ZendEngine2/tests/gc_005.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_006.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_006.phpt
+++ ZendEngine2/tests/gc_006.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_007.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_007.phpt
+++ ZendEngine2/tests/gc_007.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_008.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_008.phpt
+++ ZendEngine2/tests/gc_008.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_009.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_009.phpt
+++ ZendEngine2/tests/gc_009.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_010.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_010.phpt
+++ ZendEngine2/tests/gc_010.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_011.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_011.phpt
+++ ZendEngine2/tests/gc_011.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_012.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_012.phpt
+++ ZendEngine2/tests/gc_012.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_013.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_013.phpt
+++ ZendEngine2/tests/gc_013.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_014.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_014.phpt
+++ ZendEngine2/tests/gc_014.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_015.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_015.phpt
+++ ZendEngine2/tests/gc_015.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_016.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_016.phpt
+++ ZendEngine2/tests/gc_016.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_017.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_017.phpt
+++ ZendEngine2/tests/gc_017.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_018.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_018.phpt
+++ ZendEngine2/tests/gc_018.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_019.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_019.phpt
+++ ZendEngine2/tests/gc_019.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_020.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_020.phpt
+++ ZendEngine2/tests/gc_020.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_021.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_021.phpt
+++ ZendEngine2/tests/gc_021.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_022.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_022.phpt
+++ ZendEngine2/tests/gc_022.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_023.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_023.phpt
+++ ZendEngine2/tests/gc_023.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_024.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_024.phpt
+++ ZendEngine2/tests/gc_024.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_025.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_025.phpt
+++ ZendEngine2/tests/gc_025.phpt

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_026.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_026.phpt
+++ ZendEngine2/tests/gc_026.phpt

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to