]> git.vpit.fr Git - perl/modules/autovivification.git/commitdiff
In the rpeep replacement, don't check every op for recursion
authorVincent Pit <vince@profvince.com>
Sat, 12 Jul 2014 16:53:52 +0000 (18:53 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 4 Oct 2014 15:18:53 +0000 (17:18 +0200)
When the rpeep is available (i.e. starting from perl 5.13.4), recursion in
the peephole optimizer replacement seemingly only happens for static
infinite loops (think for (;;) { }), even though the 'seen' pointer table
is checked for every op. This may cause slowdowns even outside of the scope
of the pragma. To mitigate this problem, only check for recursion on
nextstate, dbstate, and stub ops, since one of those three kind of ops must
occur in any loop/block (respectively for non-empty, non-empty debugging
and empty loops).


No differences found