diff options
author | Nicholas Clark <nick@ccl4.org> | 2010-04-15 11:37:53 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2010-04-15 11:37:53 +0100 |
commit | f410a2119920dd04690025a349e79575cfb9c972 (patch) | |
tree | ff2c2f6480e96613f0609b4b959385c90f78bcec /cop.h | |
parent | d1515be42a17e7bb3fa584aea980f54524603f34 (diff) | |
download | perl-f410a2119920dd04690025a349e79575cfb9c972.tar.gz |
Move PERL_ASYNC_CHECK() from the runloop to control flow OPs.
For the typical code this gives a 5% speedup, and removes the cost of "safe
signals". Tight looping code will show less gains, but should never be slower.
Subtle bugs might remain - there might be constructions that enter the runloop
(where signals used to be dispatched) but don't contain any PERL_ASYNC_CHECK()
calls themselves.
Diffstat (limited to 'cop.h')
-rw-r--r-- | cop.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -592,6 +592,7 @@ struct block { /* Exit a block (RETURN and LAST). */ #define POPBLOCK(cx,pm) \ DEBUG_CX("POP"); \ + PERL_ASYNC_CHECK(); \ cx = &cxstack[cxstack_ix--], \ newsp = PL_stack_base + cx->blk_oldsp, \ PL_curcop = cx->blk_oldcop, \ |