Hi Dmitry,

Do you know that with your changes, no substitution will happen in a
namespace even when using :: prefix? :-/  (That's what I would do when I
know it's global, for optimization.)  Or is that what you meant by "not so
optimal?"


- Matt


----- Original Message -----
From: "Dmitry Stogov"
Sent: Thursday, July 31, 2008

> Thanks Matt. I committed near the same patch.
> It's not so optimal, but little bit more clear.
>
> Thanks. Dmitry.
>
> Matt Wilmas wrote:
> > 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


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to