Dmitry, No worries ... I had just found out it wasn't particular to phpdbg ...
<?php function foo($bar) { var_dump(eval ("return \$bar;")); var_dump($bar); } foo("test"); ?> Cheers Joe On Tue, Apr 5, 2016 at 1:14 PM, Dmitry Stogov <dmi...@zend.com> wrote: > > > On 04/05/2016 12:04 PM, Derick Rethans wrote: > >> On Tue, 5 Apr 2016, Dmitry Stogov wrote: >> >> I propose a micro optimization for RETURN statement. >>> >>> Currently "return $x" increments reference counter of $x, then in >>> zend_leave_helper() we perform zval_ptr_dtor() on the same $x. >>> >>> The patch sets the original value of $x to null in first place, so >>> zval_ptr_dtor() is not going to be called. >>> >>> https://gist.github.com/dstogov/36f68b206242a39691ac539c2fc85d40 >>> >>> the performance impact is invisible (0.1% less instruction retired on >>> Wordpress). >>> >>> It breaks sapi/phpdbg/tests/breakpoints_005.phpt, but this is probably >>> not a big deal. >>> >>> BTW: this change may affect debuggers in some other way. >>> >> I'd like to know why this breaks before saying something. It'd be a PITA >> if this micro optimisation wouldn't actually do a lot performance wise, >> but makes some debugging not possible. >> > Actually, the patch has a bug. > It doesn't take into account that "return $x;" might be used in global > scope. > Setting $x to NULL in this case isn't right, of course. > > Introducing another check would probably negate the effect of > micro-optimization. > > So, ignore this for now, and sorry for noise. > > Thanks. Dmitry. > > > > >> cheers, >> Derick >> > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >