In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/2e2d70f2b1c8c037ccde21d4de658efaa0008b49?hp=0b077c88df88ab0d1e7e4c9d8a5a6992563912e1>
- Log ----------------------------------------------------------------- commit 2e2d70f2b1c8c037ccde21d4de658efaa0008b49 Author: David Mitchell <[email protected]> Date: Mon Nov 14 10:35:39 2016 +0000 eliminate OPpRUNTIME private PMOP flag This flag was added in 5.004 and even then it didn't seem to be used for anything. It gets set and unset in various places, but is never tested. I'm not even sure what it was intended for. M dump.c M ext/B/t/f_sort.t M ext/B/t/optree_misc.t M ext/B/t/optree_samples.t M lib/B/Op_private.pm M op.c M opcode.h M pp_ctl.c M regen/op_private commit d3d326f25de908230e5230aca83f78017a4a136a Author: David Mitchell <[email protected]> Date: Mon Nov 14 09:22:09 2016 +0000 clarify what the SVf_AMAGIC means M sv.h ----------------------------------------------------------------------- Summary of changes: dump.c | 5 +- ext/B/t/f_sort.t | 4 +- ext/B/t/optree_misc.t | 4 +- ext/B/t/optree_samples.t | 4 +- lib/B/Op_private.pm | 4 - op.c | 5 +- opcode.h | 382 +++++++++++++++++++++++------------------------ pp_ctl.c | 1 - regen/op_private | 6 - sv.h | 7 +- 10 files changed, 204 insertions(+), 218 deletions(-) diff --git a/dump.c b/dump.c index 1c64449..0d3dce5 100644 --- a/dump.c +++ b/dump.c @@ -664,9 +664,8 @@ Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) else ch = '/'; if (PM_GETRE(pm)) - Perl_dump_indent(aTHX_ level, file, "PMf_PRE %c%.*s%c%s\n", - ch,(int)RX_PRELEN(PM_GETRE(pm)), RX_PRECOMP(PM_GETRE(pm)), ch, - (pm->op_private & OPpRUNTIME) ? " (RUNTIME)" : ""); + Perl_dump_indent(aTHX_ level, file, "PMf_PRE %c%.*s%c\n", + ch,(int)RX_PRELEN(PM_GETRE(pm)), RX_PRECOMP(PM_GETRE(pm)), ch); else Perl_dump_indent(aTHX_ level, file, "PMf_PRE (RUNTIME)\n"); diff --git a/ext/B/t/f_sort.t b/ext/B/t/f_sort.t index eda5a21..fe09278 100644 --- a/ext/B/t/f_sort.t +++ b/ext/B/t/f_sort.t @@ -516,7 +516,7 @@ checkOptree(name => q{Compound sort/map Expression }, # b <;> nextstate(main 608 (eval 34):2) v:{ # c <0> pushmark s # d <#> gvsv[*_] s -# e </> match(/"=(\\d+)"/) l/RTIME +# e </> match(/"=(\\d+)"/) l # f <#> gvsv[*_] s # g <1> uc[t17] sK/1 # h <@> anonlist sK*/1 @@ -546,7 +546,7 @@ EOT_EOT # b <;> nextstate(main 608 (eval 34):2) v:{ # c <0> pushmark s # d <$> gvsv(*_) s -# e </> match(/"=(\\d+)"/) l/RTIME +# e </> match(/"=(\\d+)"/) l # f <$> gvsv(*_) s # g <1> uc[t9] sK/1 # h <@> anonlist sK*/1 diff --git a/ext/B/t/optree_misc.t b/ext/B/t/optree_misc.t index 6505f65..22440ca 100644 --- a/ext/B/t/optree_misc.t +++ b/ext/B/t/optree_misc.t @@ -438,12 +438,12 @@ checkOptree ( name => 'm?x?', # 3 <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->3 # 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2 -# 2 </> match(/"x"/) /RTIME ->3 +# 2 </> match(/"x"/) ->3 EOT_EOT # 3 <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->3 # 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2 -# 2 </> match(/"x"/) /RTIME ->3 +# 2 </> match(/"x"/) ->3 EONT_EONT diff --git a/ext/B/t/optree_samples.t b/ext/B/t/optree_samples.t index 4a509a7..1330a47 100644 --- a/ext/B/t/optree_samples.t +++ b/ext/B/t/optree_samples.t @@ -431,7 +431,7 @@ checkOptree ( name => '@foo = grep(!/^\#/, @bar)', # 5 <1> rv2av[t4] lKM/1 # 6 <@> grepstart lK # 7 <|> grepwhile(other->8)[t5] lK -# 8 </> match(/"^#"/) s/RTIME +# 8 </> match(/"^#"/) s # 9 <1> not sK/1 # goto 7 # a <0> pushmark s @@ -447,7 +447,7 @@ EOT_EOT # 5 <1> rv2av[t2] lKM/1 # 6 <@> grepstart lK # 7 <|> grepwhile(other->8)[t3] lK -# 8 </> match(/"^\\#"/) s/RTIME +# 8 </> match(/"^\\#"/) s # 9 <1> not sK/1 # goto 7 # a <0> pushmark s diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm index d6e1435..98eeb68 100644 --- a/lib/B/Op_private.pm +++ b/lib/B/Op_private.pm @@ -147,7 +147,6 @@ $bits{$_}{6} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv split); $bits{$_}{6} = 'OPpPAD_STATE' for qw(lvavref lvref padav padhv padsv pushmark refassign); $bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo); $bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite); -$bits{$_}{5} = 'OPpRUNTIME' for qw(match qr split subst substcont); $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv); $bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtr ... [294 chars truncated] $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr); @@ -661,7 +660,6 @@ our %defines = ( OPpREFCOUNTED => 64, OPpREPEAT_DOLIST => 64, OPpREVERSE_INPLACE => 8, - OPpRUNTIME => 32, OPpSLICE => 64, OPpSLICEWARNING => 4, OPpSORT_DESCEND => 16, @@ -756,7 +754,6 @@ our %labels = ( OPpREFCOUNTED => 'REFC', OPpREPEAT_DOLIST => 'DOLIST', OPpREVERSE_INPLACE => 'INPLACE', - OPpRUNTIME => 'RTIME', OPpSLICE => 'SLICE', OPpSLICEWARNING => 'SLICEWARN', OPpSORT_DESCEND => 'DESC', @@ -817,7 +814,6 @@ our %ops_using = ( OPpREFCOUNTED => [qw(leave leaveeval leavesub leavesublv leavewrite)], OPpREPEAT_DOLIST => [qw(repeat)], OPpREVERSE_INPLACE => [qw(reverse)], - OPpRUNTIME => [qw(match qr split subst substcont)], OPpSLICE => [qw(delete)], OPpSLICEWARNING => [qw(aslice hslice padav padhv rv2av rv2hv)], OPpSORT_DESCEND => [qw(sort)], diff --git a/op.c b/op.c index 2c03d29..63a73ee 100644 --- a/op.c +++ b/op.c @@ -10556,8 +10556,6 @@ Perl_ck_match(pTHX_ OP *o) PERL_UNUSED_CONTEXT; PERL_ARGS_ASSERT_CK_MATCH; - if (o->op_type == OP_MATCH || o->op_type == OP_QR) - o->op_private |= OPpRUNTIME; return o; } @@ -11192,8 +11190,7 @@ Perl_ck_split(pTHX_ OP *o) op_sibling_splice(kid, cLISTOPx(kid)->op_last, 0, sibs); /* and reattach */ OpTYPE_set(kid, OP_SPLIT); kid->op_flags = (o->op_flags | (kid->op_flags & OPf_KIDS)); - assert(!(kid->op_private & ~OPpRUNTIME)); - kid->op_private = (o->op_private | (kid->op_private & OPpRUNTIME)); + kid->op_private = o->op_private; op_free(o); o = kid; kid = sibs; /* kid is now the string arg of the split */ diff --git a/opcode.h b/opcode.h index 525ddc1..5aec1a8 100644 --- a/opcode.h +++ b/opcode.h @@ -2260,7 +2260,6 @@ END_EXTERN_C #define OPpMAY_RETURN_CONSTANT 0x20 #define OPpMULTIDEREF_DELETE 0x20 #define OPpOPEN_IN_CRLF 0x20 -#define OPpRUNTIME 0x20 #define OPpSORT_QSORT 0x20 #define OPpTRANS_COMPLEMENT 0x20 #define OPpTRUEBOOL 0x20 @@ -2393,7 +2392,6 @@ EXTCONST char PL_op_private_labels[] = { 'R','E','P','L','1','S','T','\0', 'R','E','V','\0', 'R','E','V','E','R','S','E','D','\0', - 'R','T','I','M','E','\0', 'S','H','O','R','T','\0', 'S','L','I','C','E','\0', 'S','L','I','C','E','W','A','R','N','\0', @@ -2428,14 +2426,14 @@ EXTCONST char PL_op_private_labels[] = { EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, - 0, 545, -1, + 0, 539, -1, 0, 8, -1, 0, 8, -1, - 0, 552, -1, - 0, 541, -1, - 1, -1, 0, 518, 1, 33, 2, 283, -1, + 0, 546, -1, + 0, 535, -1, + 1, -1, 0, 512, 1, 33, 2, 283, -1, 4, -1, 1, 164, 2, 171, 3, 178, -1, - 4, -1, 0, 518, 1, 33, 2, 283, 3, 110, -1, + 4, -1, 0, 512, 1, 33, 2, 283, 3, 110, -1, }; @@ -2474,18 +2472,18 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* regcmaybe */ 0, /* regcreset */ 0, /* regcomp */ - 53, /* match */ - 53, /* qr */ - 53, /* subst */ - 54, /* substcont */ - 56, /* trans */ - 56, /* transr */ - 63, /* sassign */ - 66, /* aassign */ + -1, /* match */ + -1, /* qr */ + -1, /* subst */ + 0, /* substcont */ + 53, /* trans */ + 53, /* transr */ + 60, /* sassign */ + 63, /* aassign */ 0, /* chop */ 0, /* schop */ - 71, /* chomp */ - 71, /* schomp */ + 68, /* chomp */ + 68, /* schomp */ 0, /* defined */ 0, /* undef */ 0, /* study */ @@ -2498,22 +2496,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* i_postinc */ 0, /* postdec */ 0, /* i_postdec */ - 73, /* pow */ - 73, /* multiply */ - 73, /* i_multiply */ - 73, /* divide */ - 73, /* i_divide */ - 73, /* modulo */ - 73, /* i_modulo */ - 75, /* repeat */ - 73, /* add */ - 73, /* i_add */ - 73, /* subtract */ - 73, /* i_subtract */ - 73, /* concat */ - 77, /* stringify */ - 73, /* left_shift */ - 73, /* right_shift */ + 70, /* pow */ + 70, /* multiply */ + 70, /* i_multiply */ + 70, /* divide */ + 70, /* i_divide */ + 70, /* modulo */ + 70, /* i_modulo */ + 72, /* repeat */ + 70, /* add */ + 70, /* i_add */ + 70, /* subtract */ + 70, /* i_subtract */ + 70, /* concat */ + 74, /* stringify */ + 70, /* left_shift */ + 70, /* right_shift */ 12, /* lt */ 12, /* i_lt */ 12, /* gt */ @@ -2538,9 +2536,9 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 12, /* bit_and */ 12, /* bit_xor */ 12, /* bit_or */ - 73, /* nbit_and */ - 73, /* nbit_xor */ - 73, /* nbit_or */ + 70, /* nbit_and */ + 70, /* nbit_xor */ + 70, /* nbit_or */ 12, /* sbit_and */ 12, /* sbit_xor */ 12, /* sbit_or */ @@ -2548,113 +2546,113 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* i_negate */ 0, /* not */ 0, /* complement */ - 71, /* ncomplement */ - 71, /* scomplement */ + 68, /* ncomplement */ + 68, /* scomplement */ 12, /* smartmatch */ - 77, /* atan2 */ - 71, /* sin */ - 71, /* cos */ - 77, /* rand */ - 77, /* srand */ - 71, /* exp */ - 71, /* log */ - 71, /* sqrt */ - 71, /* int */ - 71, /* hex */ - 71, /* oct */ - 71, /* abs */ - 71, /* length */ - 79, /* substr */ - 82, /* vec */ - 77, /* index */ - 77, /* rindex */ + 74, /* atan2 */ + 68, /* sin */ + 68, /* cos */ + 74, /* rand */ + 74, /* srand */ + 68, /* exp */ + 68, /* log */ + 68, /* sqrt */ + 68, /* int */ + 68, /* hex */ + 68, /* oct */ + 68, /* abs */ + 68, /* length */ + 76, /* substr */ + 79, /* vec */ + 74, /* index */ + 74, /* rindex */ 47, /* sprintf */ 47, /* formline */ - 71, /* ord */ - 71, /* chr */ - 77, /* crypt */ + 68, /* ord */ + 68, /* chr */ + 74, /* crypt */ 0, /* ucfirst */ 0, /* lcfirst */ 0, /* uc */ 0, /* lc */ 0, /* quotemeta */ - 84, /* rv2av */ - 90, /* aelemfast */ - 90, /* aelemfast_lex */ - 91, /* aelem */ - 96, /* aslice */ - 99, /* kvaslice */ + 81, /* rv2av */ + 87, /* aelemfast */ + 87, /* aelemfast_lex */ + 88, /* aelem */ + 93, /* aslice */ + 96, /* kvaslice */ 0, /* aeach */ 0, /* avalues */ 38, /* akeys */ 0, /* each */ 0, /* values */ 38, /* keys */ - 100, /* delete */ - 103, /* exists */ - 105, /* rv2hv */ - 91, /* helem */ - 96, /* hslice */ - 99, /* kvhslice */ - 113, /* multideref */ + 97, /* delete */ + 100, /* exists */ + 102, /* rv2hv */ + 88, /* helem */ + 93, /* hslice */ + 96, /* kvhslice */ + 110, /* multideref */ 47, /* unpack */ 47, /* pack */ - 120, /* split */ + 117, /* split */ 47, /* join */ - 126, /* list */ + 122, /* list */ 12, /* lslice */ 47, /* anonlist */ 47, /* anonhash */ 47, /* splice */ - 77, /* push */ + 74, /* push */ 0, /* pop */ 0, /* shift */ - 77, /* unshift */ - 128, /* sort */ - 135, /* reverse */ + 74, /* unshift */ + 124, /* sort */ + 131, /* reverse */ 0, /* grepstart */ 0, /* grepwhile */ 0, /* mapstart */ 0, /* mapwhile */ 0, /* range */ - 137, /* flip */ - 137, /* flop */ + 133, /* flip */ + 133, /* flop */ 0, /* and */ 0, /* or */ 12, /* xor */ 0, /* dor */ - 139, /* cond_expr */ + 135, /* cond_expr */ 0, /* andassign */ 0, /* orassign */ 0, /* dorassign */ 0, /* method */ - 141, /* entersub */ - 148, /* leavesub */ - 148, /* leavesublv */ + 137, /* entersub */ + 144, /* leavesub */ + 144, /* leavesublv */ 0, /* argcheck */ - 150, /* argelem */ + 146, /* argelem */ 0, /* argdefelem */ - 152, /* caller */ + 148, /* caller */ 47, /* warn */ 47, /* die */ 47, /* reset */ -1, /* lineseq */ - 154, /* nextstate */ - 154, /* dbstate */ + 150, /* nextstate */ + 150, /* dbstate */ -1, /* unstack */ -1, /* enter */ - 155, /* leave */ + 151, /* leave */ -1, /* scope */ - 157, /* enteriter */ - 161, /* iter */ + 153, /* enteriter */ + 157, /* iter */ -1, /* enterloop */ - 162, /* leaveloop */ + 158, /* leaveloop */ -1, /* return */ - 164, /* last */ - 164, /* next */ - 164, /* redo */ - 164, /* dump */ - 164, /* goto */ + 160, /* last */ + 160, /* next */ + 160, /* redo */ + 160, /* dump */ + 160, /* goto */ 47, /* exit */ 0, /* method_named */ 0, /* method_super */ @@ -2666,7 +2664,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* leavewhen */ -1, /* break */ -1, /* continue */ - 166, /* open */ + 162, /* open */ 47, /* close */ 47, /* pipe_op */ 47, /* fileno */ @@ -2682,7 +2680,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 47, /* getc */ 47, /* read */ 47, /* enterwrite */ - 148, /* leavewrite */ + 144, /* leavewrite */ -1, /* prtf */ -1, /* print */ -1, /* say */ @@ -2696,7 +2694,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 47, /* truncate */ 47, /* fcntl */ 47, /* ioctl */ - 77, /* flock */ + 74, /* flock */ 47, /* send */ 47, /* recv */ 47, /* socket */ @@ -2712,45 +2710,45 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* getpeername */ 0, /* lstat */ 0, /* stat */ - 171, /* ftrread */ - 171, /* ftrwrite */ - 171, /* ftrexec */ - 171, /* fteread */ - 171, /* ftewrite */ - 171, /* fteexec */ - 176, /* ftis */ - 176, /* ftsize */ - 176, /* ftmtime */ - 176, /* ftatime */ - 176, /* ftctime */ - 176, /* ftrowned */ - 176, /* fteowned */ - 176, /* ftzero */ - 176, /* ftsock */ - 176, /* ftchr */ - 176, /* ftblk */ - 176, /* ftfile */ - 176, /* ftdir */ - 176, /* ftpipe */ - 176, /* ftsuid */ - 176, /* ftsgid */ - 176, /* ftsvtx */ - 176, /* ftlink */ - 176, /* fttty */ - 176, /* fttext */ - 176, /* ftbinary */ - 77, /* chdir */ - 77, /* chown */ - 71, /* chroot */ - 77, /* unlink */ - 77, /* chmod */ - 77, /* utime */ - 77, /* rename */ - 77, /* link */ - 77, /* symlink */ + 167, /* ftrread */ + 167, /* ftrwrite */ + 167, /* ftrexec */ + 167, /* fteread */ + 167, /* ftewrite */ + 167, /* fteexec */ + 172, /* ftis */ + 172, /* ftsize */ + 172, /* ftmtime */ + 172, /* ftatime */ + 172, /* ftctime */ + 172, /* ftrowned */ + 172, /* fteowned */ + 172, /* ftzero */ + 172, /* ftsock */ + 172, /* ftchr */ + 172, /* ftblk */ + 172, /* ftfile */ + 172, /* ftdir */ + 172, /* ftpipe */ + 172, /* ftsuid */ + 172, /* ftsgid */ + 172, /* ftsvtx */ + 172, /* ftlink */ + 172, /* fttty */ + 172, /* fttext */ + 172, /* ftbinary */ + 74, /* chdir */ + 74, /* chown */ + 68, /* chroot */ + 74, /* unlink */ + 74, /* chmod */ + 74, /* utime */ + 74, /* rename */ + 74, /* link */ + 74, /* symlink */ 0, /* readlink */ - 77, /* mkdir */ - 71, /* rmdir */ + 74, /* mkdir */ + 68, /* rmdir */ 47, /* open_dir */ 0, /* readdir */ 0, /* telldir */ @@ -2758,22 +2756,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* rewinddir */ 0, /* closedir */ -1, /* fork */ - 180, /* wait */ - 77, /* waitpid */ - 77, /* system */ - 77, /* exec */ - 77, /* kill */ - 180, /* getppid */ - 77, /* getpgrp */ - 77, /* setpgrp */ - 77, /* getpriority */ - 77, /* setpriority */ - 180, /* time */ + 176, /* wait */ + 74, /* waitpid */ + 74, /* system */ + 74, /* exec */ + 74, /* kill */ + 176, /* getppid */ + 74, /* getpgrp */ + 74, /* setpgrp */ + 74, /* getpriority */ + 74, /* setpriority */ + 176, /* time */ -1, /* tms */ 0, /* localtime */ 47, /* gmtime */ 0, /* alarm */ - 77, /* sleep */ + 74, /* sleep */ 47, /* shmget */ 47, /* shmctl */ 47, /* shmread */ @@ -2788,8 +2786,8 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* require */ 0, /* dofile */ -1, /* hintseval */ - 181, /* entereval */ - 148, /* leaveeval */ + 177, /* entereval */ + 144, /* leaveeval */ 0, /* entertry */ -1, /* leavetry */ 0, /* ghbyname */ @@ -2827,18 +2825,18 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* lock */ 0, /* once */ -1, /* custom */ - 187, /* coreargs */ - 191, /* avhvswitch */ + 183, /* coreargs */ + 187, /* avhvswitch */ 3, /* runcv */ 0, /* fc */ -1, /* padcv */ -1, /* introcv */ -1, /* clonecv */ - 193, /* padrange */ - 195, /* refassign */ - 201, /* lvref */ - 207, /* lvrefslice */ - 208, /* lvavref */ + 189, /* padrange */ + 191, /* refassign */ + 197, /* lvref */ + 203, /* lvrefslice */ + 204, /* lvavref */ 0, /* anonconst */ }; @@ -2858,49 +2856,47 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i ... [643 chars truncated] - 0x2cbc, 0x3eb9, /* pushmark */ + 0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, ... [654 chars truncated] + 0x2cbc, 0x3df9, /* pushmark */ 0x00bd, /* wantarray, runcv */ - 0x0498, 0x18d0, 0x3f6c, 0x3a28, 0x3085, /* const */ + 0x0498, 0x18d0, 0x3eac, 0x3968, 0x3085, /* const */ 0x2cbc, 0x31d9, /* gvsv */ 0x1735, /* gv */ 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, ... [14 chars truncated] - 0x2cbc, 0x3eb8, 0x03d7, /* padsv */ - 0x2cbc, 0x3eb8, 0x2dac, 0x3ba9, /* padav */ - 0x2cbc, 0x3eb8, 0x0614, 0x06b0, 0x2dac, 0x3ba9, /* padhv */ - 0x2cbc, 0x1ab8, 0x03d6, 0x2dac, 0x2fa8, 0x3f64, 0x0003, /* rv2gv */ - 0x2cbc, 0x31d8, 0x03d6, 0x3f64, 0x0003, /* rv2sv */ + 0x2cbc, 0x3df8, 0x03d7, /* padsv */ + 0x2cbc, 0x3df8, 0x2dac, 0x3ae9, /* padav */ + 0x2cbc, 0x3df8, 0x0614, 0x06b0, 0x2dac, 0x3ae9, /* padhv */ + 0x2cbc, 0x1ab8, 0x03d6, 0x2dac, 0x2fa8, 0x3ea4, 0x0003, /* rv2gv */ + 0x2cbc, 0x31d8, 0x03d6, 0x3ea4, 0x0003, /* rv2sv */ 0x2dac, 0x0003, /* av2arylen, pos, akeys, keys */ - 0x2f1c, 0x0ef8, 0x0c54, 0x028c, 0x4128, 0x3f64, 0x0003, /* rv2cv */ + 0x2f1c, 0x0ef8, 0x0c54, 0x028c, 0x4068, 0x3ea4, 0x0003, /* rv2cv */ 0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, rea ... [363 chars truncated] 0x33bc, 0x32d8, 0x2714, 0x2650, 0x0003, /* backtick */ - 0x3975, /* match, qr, subst */ - 0x3974, 0x0003, /* substcont */ - 0x0ffc, 0x2038, 0x0834, 0x3cec, 0x23c8, 0x01e4, 0x0141, /* trans, transr */ + 0x0ffc, 0x2038, 0x0834, 0x3c2c, 0x23c8, 0x01e4, 0x0141, /* trans, transr */ 0x0e3c, 0x0538, 0x0067, /* sassign */ 0x0af8, 0x09f4, 0x08f0, 0x2dac, 0x0067, /* aassign */ - 0x41d0, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */ - 0x41d0, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ + 0x4110, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */ + 0x4110, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ 0x13b8, 0x0067, /* repeat */ - 0x41d0, 0x018f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgr ... [46 chars truncated] + 0x4110, 0x018f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgr ... [46 chars truncated] 0x36d0, 0x2dac, 0x012b, /* substr */ 0x2dac, 0x0067, /* vec */ - 0x2cbc, 0x31d8, 0x2dac, 0x3ba8, 0x3f64, 0x0003, /* rv2av */ + 0x2cbc, 0x31d8, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2av */ 0x025f, /* aelemfast, aelemfast_lex */ 0x2cbc, 0x2bb8, 0x03d6, 0x2dac, 0x0067, /* aelem, helem */ - 0x2cbc, 0x2dac, 0x3ba9, /* aslice, hslice */ + 0x2cbc, 0x2dac, 0x3ae9, /* aslice, hslice */ 0x2dad, /* kvaslice, kvhslice */ - 0x2cbc, 0x3af8, 0x0003, /* delete */ - 0x4058, 0x0003, /* exists */ - 0x2cbc, 0x31d8, 0x0614, 0x06b0, 0x2dac, 0x3ba8, 0x3f64, 0x0003, /* rv2hv */ - 0x2cbc, 0x2bb8, 0x1074, 0x19d0, 0x2dac, 0x3f64, 0x0003, /* multideref */ - 0x2cbc, 0x31d8, 0x3974, 0x0350, 0x29cc, 0x2489, /* split */ + 0x2cbc, 0x3a38, 0x0003, /* delete */ + 0x3f98, 0x0003, /* exists */ + 0x2cbc, 0x31d8, 0x0614, 0x06b0, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2hv */ + 0x2cbc, 0x2bb8, 0x1074, 0x19d0, 0x2dac, 0x3ea4, 0x0003, /* multideref */ + 0x2cbc, 0x31d8, 0x0350, 0x29cc, 0x2489, /* split */ 0x2cbc, 0x20f9, /* list */ - 0x3dd8, 0x3474, 0x1310, 0x27ac, 0x37c8, 0x28a4, 0x3141, /* sort */ + 0x3d18, 0x3474, 0x1310, 0x27ac, 0x37c8, 0x28a4, 0x3141, /* sort */ 0x27ac, 0x0003, /* reverse */ 0x2a58, 0x0003, /* flip, flop */ 0x2cbc, 0x0003, /* cond_expr */ - 0x2cbc, 0x0ef8, 0x03d6, 0x028c, 0x4128, 0x3f64, 0x2561, /* entersub */ + 0x2cbc, 0x0ef8, 0x03d6, 0x028c, 0x4068, 0x3ea4, 0x2561, /* entersub */ 0x3538, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ 0x02aa, 0x0003, /* argelem */ 0x00bc, 0x018f, /* caller */ @@ -2909,19 +2905,19 @@ EXTCONST U16 PL_op_private_bitdefs[] = { 0x2cbc, 0x31d8, 0x0f6c, 0x3845, /* enteriter */ 0x3845, /* iter */ 0x2b5c, 0x0067, /* leaveloop */ - 0x433c, 0x0003, /* last, next, redo, dump, goto */ + 0x427c, 0x0003, /* last, next, redo, dump, goto */ 0x33bc, 0x32d8, 0x2714, 0x2650, 0x018f, /* open */ 0x1c70, 0x1ecc, 0x1d88, 0x1b44, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ 0x1c70, 0x1ecc, 0x1d88, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ... [12 chars truncated] - 0x41d1, /* wait, getppid, time */ - 0x35d4, 0x0d10, 0x076c, 0x42a8, 0x21e4, 0x0003, /* entereval */ + 0x4111, /* wait, getppid, time */ + 0x35d4, 0x0d10, 0x076c, 0x41e8, 0x21e4, 0x0003, /* entereval */ 0x2e7c, 0x0018, 0x1224, 0x1141, /* coreargs */ 0x2dac, 0x00c7, /* avhvswitch */ 0x2cbc, 0x01fb, /* padrange */ - 0x2cbc, 0x3eb8, 0x04f6, 0x292c, 0x1828, 0x0067, /* refassign */ - 0x2cbc, 0x3eb8, 0x04f6, 0x292c, 0x1828, 0x0003, /* lvref */ + 0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0067, /* refassign */ + 0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0003, /* lvref */ 0x2cbd, /* lvrefslice */ - 0x2cbc, 0x3eb8, 0x0003, /* lvavref */ + 0x2cbc, 0x3df8, 0x0003, /* lvavref */ }; @@ -2960,10 +2956,10 @@ EXTCONST U8 PL_op_private_valid[] = { /* REGCMAYBE */ (OPpARG1_MASK), /* REGCRESET */ (OPpARG1_MASK), /* REGCOMP */ (OPpARG1_MASK), - /* MATCH */ (OPpRUNTIME), - /* QR */ (OPpRUNTIME), - /* SUBST */ (OPpRUNTIME), - /* SUBSTCONT */ (OPpARG1_MASK|OPpRUNTIME), + /* MATCH */ (0), + /* QR */ (0), + /* SUBST */ (0), + /* SUBSTCONT */ (OPpARG1_MASK), /* TRANS */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), /* TRANSR */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), /* SASSIGN */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV), @@ -3085,7 +3081,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* MULTIDEREF */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpMAYBE_LVSUB|OPpMULTIDEREF_EXISTS|OPpMULTIDEREF_DELETE|OPpLVAL_DEFER|OPpLVAL_INTRO), /* UNPACK */ (OPpARG4_MASK), /* PACK */ (OPpARG4_MASK), - /* SPLIT */ (OPpSPLIT_IMPLIM|OPpSPLIT_LEX|OPpSPLIT_ASSIGN|OPpRUNTIME|OPpOUR_INTRO|OPpLVAL_INTRO), + /* SPLIT */ (OPpSPLIT_IMPLIM|OPpSPLIT_LEX|OPpSPLIT_ASSIGN|OPpOUR_INTRO|OPpLVAL_INTRO), /* JOIN */ (OPpARG4_MASK), /* LIST */ (OPpLIST_GUESSED|OPpLVAL_INTRO), /* LSLICE */ (OPpARG2_MASK), diff --git a/pp_ctl.c b/pp_ctl.c index f7dd946..847a100 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -178,7 +178,6 @@ PP(pp_regcomp) /* can't change the optree at runtime either */ /* PMf_KEEP is handled differently under threads to avoid these problems */ if (pm->op_pmflags & PMf_KEEP) { - pm->op_private &= ~OPpRUNTIME; /* no point compiling again */ cLOGOP->op_first->op_next = PL_op->op_next; } #endif diff --git a/regen/op_private b/regen/op_private index d459d47..5a8e714 100644 --- a/regen/op_private +++ b/regen/op_private @@ -396,12 +396,6 @@ addbits($_, 7 => qw(OPpLVALUE LV)) for qw(leave leaveloop); -# Pattern coming in on the stack -addbits($_, 5 => qw(OPpRUNTIME RTIME)) - for qw(match subst substcont qr split); - - - # autovivify: Want ref to something for (qw(rv2gv rv2sv padsv aelem helem entersub)) { addbits($_, '4..5' => { diff --git a/sv.h b/sv.h index a9aca37..7808b89 100644 --- a/sv.h +++ b/sv.h @@ -413,7 +413,12 @@ perform the upgrade if necessary. See C<L</svtype>>. #define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */ -/* Note that SVf_AMAGIC is now only set on stashes. */ +/* SVf_AMAGIC means that the stash *may* have have overload methods. It's + * set each time a function is compiled into a stash, and is reset by the + * overload code when called for the first time and finds that there are + * no overload methods. Note that this used to be set on the object; but + * is now only set on stashes. + */ #define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */ #define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if SvLEN == 0) */ -- Perl5 Master Repository
