diff options
-rw-r--r-- | op.c | 10 | ||||
-rw-r--r-- | pad.c | 8 | ||||
-rw-r--r-- | pad.h | 3 |
3 files changed, 8 insertions, 13 deletions
@@ -3706,9 +3706,8 @@ Perl_block_start(pTHX_ int full) { const int retval = PL_savestack_ix; - PL_compiling.cop_seq = PL_cop_seqmax++; - if (PL_cop_seqmax == PERL_PADSEQ_INTRO) /* not a legal value */ - PL_cop_seqmax++; + PL_compiling.cop_seq = PL_cop_seqmax; + COP_SEQMAX_INC; pad_block_start(full); SAVEHINTS(); PL_hints &= ~HINT_BLOCK_SCOPE; @@ -5889,10 +5888,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg) PL_hints |= HINT_BLOCK_SCOPE; PL_parser->copline = NOLINE; - PL_cop_seqmax++; /* Purely for B::*'s benefit */ - if (PL_cop_seqmax == PERL_PADSEQ_INTRO) /* not a legal value */ - PL_cop_seqmax++; - + COP_SEQMAX_INC; /* Purely for B::*'s benefit */ } /* @@ -1571,9 +1571,7 @@ Perl_intro_my(pTHX) ); } } - PL_cop_seqmax++; - if (PL_cop_seqmax == PERL_PADSEQ_INTRO) /* not a legal value */ - PL_cop_seqmax++; + COP_SEQMAX_INC; PL_min_intro_pending = 0; PL_comppad_name_fill = PL_max_intro_pending; /* Needn't search higher */ DEBUG_Xv(PerlIO_printf(Perl_debug_log, @@ -1631,9 +1629,7 @@ Perl_pad_leavemy(pTHX) } } } - PL_cop_seqmax++; - if (PL_cop_seqmax == PERL_PADSEQ_INTRO) /* not a legal value */ - PL_cop_seqmax++; + COP_SEQMAX_INC; DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad leavemy: seq = %ld\n", (long)PL_cop_seqmax)); return o; @@ -39,6 +39,9 @@ struct padlist { * flagging that a lexical is being introduced, or has not yet left scope */ #define PERL_PADSEQ_INTRO U32_MAX +#define COP_SEQMAX_INC \ + (PL_cop_seqmax++, \ + (void)(PL_cop_seqmax == PERL_PADSEQ_INTRO && PL_cop_seqmax++)) /* B.xs needs these for the benefit of B::Deparse */ |