]> git.vpit.fr Git - perl/modules/autovivification.git/commit
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)
commit6b60db564a2cc9f93f52ee22535da1b73a92eb83
treedbf2d60eed0b833443f915905f2da37b04b08e5e
parentd0a8557c5051ae08a40440d93d5f17575b75cfc4
In the rpeep replacement, don't check every op for recursion

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).
autovivification.xs