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.