In the SSA optimisation framework  (part of opcache), we predict and propagate 
types of variables.

We also may detect situations when some variables may be undefined.

If variable can't be "undefined", we may avoid unnecessary run-time checks (e.g 
.like in ZEND_ADD_LONG handler).

Local variables almost always initialized before usage, but with exiting 
behavior, function arguments always may be uninitialized.


$ sapi/cli/php -d opcache.opt_debug_level=0x400000 2>&1 ../Zend/bench.php | less

...

fibo_r: ; (lines=14, args=1, vars=1, tmps=3, ssa_vars=9, no_loops)
...
        #1.CV0($n) [undef, any] = RECV 1
        #2.T1 [bool] RANGE[0..1] = IS_SMALLER #1.CV0($n) [undef, any] int(2)
        JMPZ #2.T1 [bool] RANGE[0..1] BB2
...


With the patch $n won't include "undef" anymore.


Thanks. Dmitry.

________________________________
From: Joe Watkins <pthre...@pthreads.org>
Sent: Wednesday, June 1, 2016 8:42:49 PM
To: Dmitry Stogov
Cc: PHP internals; Nikita Popov
Subject: Re: [PHP-DEV] [RFC] Replace "Missing argument" warning with "Too few 
arguments" exception

Evening,

    Could you expand on the "obvious optimization opportunities" in the 
document ?

    They are not obvious to me, and even if they were, this document is part of 
the history of this change, so a little more detail would be nice.

Cheers
Joe

On Wed, Jun 1, 2016 at 11:55 AM, Dmitry Stogov 
<dmi...@zend.com<mailto:dmi...@zend.com>> wrote:
hi,


Please take a look into the proposal.


https://wiki.php.net/rfc/too_few_args


The RFC is extremely simple (both proposal and implementation) and almost 
completely described by the email subject.

I think, this mini-RFC doesn't need 2-weeks discussion period, so I'm going to 
start the vote on next week.


Thanks. Dmitry.

Reply via email to