RE: [PHP-DEV] Reference cycle collector patch
| From: | Johannes Schlüter | Date: | Sun, 25 Nov 2007 15:18:47 +0000 |
| Subject: | RE: [PHP-DEV] Reference cycle collector patch | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-33423@lists.php.net to get a copy of this message | ||
Hi Andi,
On Mon, 2007-10-08 at 09:00 -0700, "Andi Gutmans" wrote:
> Thanks David.
> We'll start testing the patch in our labs right after we're done with the Zend/PHP
> conference (early next week).
Are there any results of these benchmarks, yet?
johannes
> Andi
>
>
> > -----Original Message-----
> > From: David Wang [mailto:planetbeing@gmail.com]
> > 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
>