Thanks David. We'll start testing the patch in our labs right after we're done with the Zend/PHP conference (early next week).
Andi > -----Original Message----- > From: David Wang [mailto:[EMAIL PROTECTED] > Sent: Monday, October 08, 2007 12:13 AM > To: internals@lists.php.net > Subject: [PHP-DEV] Reference cycle collector patch > > Hey all, > > Now that macros for manipulating refcount and is_ref have been > implemented, I’m ready to submit patches for the GC. I know you all > have been waiting for this for a long time ☺. > > I have made two sets of patches, one for HEAD and one for PHP_5_3 (note > that I had to rearrange the order of definitions and #includes in > zend.h to get around a recursive dependency problem): > > http://zoo.cs.yale.edu/~yw226/gc/gc6.diff.txt > http://zoo.cs.yale.edu/~yw226/gc/gc5_3.diff.txt > > After applying those, these two files should be placed in the Zend > subdirectory: > > http://zoo.cs.yale.edu/~yw226/gc/zend_gc.c > http://zoo.cs.yale.edu/~yw226/gc/zend_gc.h > > For those who were following the progress of the GC through the > incubator SVN, the GC implemented with these patches is DIFFERENT than > the one currently in the SVN tree. They are from an “experimental” > branch that I believed was more tolerant of the zval juggling PHP and > its extensions sometimes like to do. It turned out to be very > successful, but I hadn’t bothered remerging it. > > I highly recommend these two patches in addition (but they are optional > for GC functioning): > > http://zoo.cs.yale.edu/~yw226/gc/alwaysinline6.diff.txt > http://zoo.cs.yale.edu/~yw226/gc/alwaysinline5_3.diff.txt > > These are meant to be applied after the previous patches. These simply > change all the inline functions in the Zend engine to “always_inline”. > Zend object files can become seriously oversized and this makes the > compiler silently ignore the inline keyword. Changing this to > always_inline (defined in zend.h) forces the compiler to inline the > function or at least give a warning if it cannot. > > The reason I bring up the issue here is that my patch is known to > sometimes push object files that were just under the internal compiler > limit over the edge and make the compiler refuse to inline. This has > the effect of making the whole Zend engine disproportionately slower. > > Anyway, please try these out and tell me how it goes! > > > David > > P.S. This patch has the GC enabled by default. > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php