Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39500 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 16243 invoked from network); 31 Jul 2008 12:09:00 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 31 Jul 2008 12:09:00 -0000 Authentication-Results: pb1.pair.com smtp.mail=php_lists@realplain.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=php_lists@realplain.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain realplain.com from 209.235.152.152 cause and error) X-PHP-List-Original-Sender: php_lists@realplain.com X-Host-Fingerprint: 209.235.152.152 mail962c35.nsolutionszone.com Linux 2.5 (sometimes 2.4) (4) Received: from [209.235.152.152] ([209.235.152.152:53967] helo=mail962c35.nsolutionszone.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 08/8B-60033-B5BA1984 for ; Thu, 31 Jul 2008 08:09:00 -0400 X-POP-User: wilmascam.centurytel.net Received: from pc1 (dsl-191-161.laj.centurytel.net [69.179.191.161]) by mail962c35.nsolutionszone.com (8.13.6.20060614/8.13.1) with SMTP id m6VC8sQa003308; Thu, 31 Jul 2008 12:08:55 GMT Message-ID: <015101c8f306$34c358f0$0201a8c0@pc1> To: , "Dmitry Stogov" References: <00ea01c8a160$2edd8160$0201a8c0@pc1> <016c01c8eccd$e28cfac0$0201a8c0@pc1> <488835D0.1040005@zend.com> <00e501c8ed77$3498cf20$0201a8c0@pc1> <48889901.8000008@zend.com> Date: Thu, 31 Jul 2008 07:08:54 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1914 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1914 Subject: Re: [PHP-DEV] [PATCH] No runtime fetching of built-in global constants From: php_lists@realplain.com ("Matt Wilmas") Hi Dmitry, For the behavior change that I mentioned in the other thread, with this code: function foo() { static $a = -PHP_INT_MAX; } Which could work sometimes, and sometimes not (if in a namespace or ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION is set). I changed things so that there is no substitution of constants (except with CT_SUBST flag, like always) for compile time constants (ZEND_CT mode). They don't create a FETCH_CONSTANT opcode anyway. :-) Another thing I realized wasn't getting optimized (runtime constants), which can be, is with: namespace foo; $a = ::PHP_INT_MAX; // :: for global scope So the patch allows substitution there as well. http://realplain.com/php/ct_const_fixes.diff http://realplain.com/php/ct_const_fixes_5_3.diff - Matt ----- Original Message ----- From: "Dmitry Stogov" Sent: Thursday, July 24, 2008 > I would propose the attached patch for this optimization. > > Opcode caches and encoders will have to disable this optimization with > ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION > > Any objections? > > Thanks. Dmitry. >