Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:32697 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 48817 invoked by uid 1010); 8 Oct 2007 07:12:49 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 48801 invoked from network); 8 Oct 2007 07:12:48 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 8 Oct 2007 07:12:48 -0000 Authentication-Results: pb1.pair.com header.from=planetbeing@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=planetbeing@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.198.191 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: planetbeing@gmail.com X-Host-Fingerprint: 209.85.198.191 rv-out-0910.google.com Received: from [209.85.198.191] ([209.85.198.191:3937] helo=rv-out-0910.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 09/30-45179-D68D9074 for ; Mon, 08 Oct 2007 03:12:46 -0400 Received: by rv-out-0910.google.com with SMTP id k15so768282rvb for ; Mon, 08 Oct 2007 00:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:from:to:subject:date:message-id:mime-version:content-type:content-transfer-encoding:x-mailer:thread-index:content-language; bh=Uwy117CsMXNb1XTtQHCEGkQKVuJUlR7G2mGDOJhSxdY=; b=Mh9yo1Eos2s90SKavZSigOkr1aH2PshZgfmA2Y/KVP4Yd79Y4lkfvi67ggskymAjfDyzTYPGf8RmEo5o++tDUnmIHUhfLua/MDmp4LEGj9w4OIoCDwlzhuHBjm/fgeDL7ff9crWw5p4DiwBrFEuILQoZDc0GO5LArZbyfAQy+WU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:from:to:subject:date:message-id:mime-version:content-type:content-transfer-encoding:x-mailer:thread-index:content-language; b=WnrpKcgXkD/SomQzlsff3soEn0qQn0Dmh/pWPH3MYHVPjM2JFp3l5kUmCQns4o/WyglT0Nj8dqeDbbIcIQUOf0owAWCfp0uqNDLte8v82Fztf1bJWuSiV9assa0Pg5qeh969lIyCi9F/BEUPwlXyVpe5/j6dJl1WadbzbV5FPsA= Received: by 10.141.164.10 with SMTP id r10mr2727839rvo.1191827562308; Mon, 08 Oct 2007 00:12:42 -0700 (PDT) Received: from DavidPC ( [24.21.139.96]) by mx.google.com with ESMTPS id g31sm11834956rvb.2007.10.08.00.12.40 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 08 Oct 2007 00:12:41 -0700 (PDT) To: Date: Mon, 8 Oct 2007 00:12:31 -0700 Message-ID: <000001c8097a$98ca3d30$ca5eb790$@com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: AcgJepaZ40+uIQavTdGG2SulDW1w+A== Content-Language: en-us Subject: Reference cycle collector patch From: planetbeing@gmail.com ("David Wang") Hey all, Now that macros for manipulating refcount and is_ref have been = implemented, I=E2=80=99m ready to submit patches for the GC. I know you = all have been waiting for this for a long time =E2=98=BA. 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 = =E2=80=9Cexperimental=E2=80=9D 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=E2=80=99t 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 = =E2=80=9Calways_inline=E2=80=9D. 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.