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