diff options
Diffstat (limited to 'ext/B')
-rw-r--r-- | ext/B/B.pm | 4 | ||||
-rw-r--r-- | ext/B/B.xs | 20 | ||||
-rw-r--r-- | ext/B/B/Asmdata.pm | 70 | ||||
-rw-r--r-- | ext/B/B/Deparse.pm | 7 | ||||
-rw-r--r-- | ext/B/defsubs_h.PL | 6 | ||||
-rw-r--r-- | ext/B/t/concise-xs.t | 6 |
6 files changed, 56 insertions, 57 deletions
diff --git a/ext/B/B.pm b/ext/B/B.pm index caccf4bfb0..533616987a 100644 --- a/ext/B/B.pm +++ b/ext/B/B.pm @@ -1047,9 +1047,7 @@ This returns the op description from the global C PL_op_desc array =item pmflags -=item pmdynflags - -=item pmpermflags +=item extflags =item precomp diff --git a/ext/B/B.xs b/ext/B/B.xs index 6fdac03042..12eb6a3309 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -988,8 +988,6 @@ LISTOP_children(o) #define PMOP_pmstash(o) o->op_pmstash #endif #define PMOP_pmflags(o) o->op_pmflags -#define PMOP_pmpermflags(o) o->op_pmpermflags -#define PMOP_pmdynflags(o) o->op_pmdynflags MODULE = B PACKAGE = B::PMOP PREFIX = PMOP_ @@ -1044,14 +1042,6 @@ U32 PMOP_pmflags(o) B::PMOP o -U32 -PMOP_pmpermflags(o) - B::PMOP o - -U8 -PMOP_pmdynflags(o) - B::PMOP o - void PMOP_precomp(o) B::PMOP o @@ -1062,6 +1052,16 @@ PMOP_precomp(o) if (rx) sv_setpvn(ST(0), rx->precomp, rx->prelen); +void +PMOP_reflags(o) + B::PMOP o + REGEXP * rx = NO_INIT + CODE: + ST(0) = sv_newmortal(); + rx = PM_GETRE(o); + if (rx) + sv_setuv(ST(0), rx->extflags); + #define SVOP_sv(o) cSVOPo->op_sv #define SVOP_gv(o) ((GV*)cSVOPo->op_sv) diff --git a/ext/B/B/Asmdata.pm b/ext/B/B/Asmdata.pm index 1cdbe13cbe..b43f7bb54a 100644 --- a/ext/B/B/Asmdata.pm +++ b/ext/B/B/Asmdata.pm @@ -137,42 +137,40 @@ $insn_data{op_pmstash} = [109, \&PUT_svindex, "GET_svindex"]; $insn_data{op_pmreplrootgv} = [110, \&PUT_svindex, "GET_svindex"]; $insn_data{pregcomp} = [111, \&PUT_pvcontents, "GET_pvcontents"]; $insn_data{op_pmflags} = [112, \&PUT_U16, "GET_U16"]; -$insn_data{op_pmpermflags} = [113, \&PUT_U16, "GET_U16"]; -$insn_data{op_pmdynflags} = [114, \&PUT_U8, "GET_U8"]; -$insn_data{op_sv} = [115, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_padix} = [116, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{op_pv} = [117, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{op_pv_tr} = [118, \&PUT_op_tr_array, "GET_op_tr_array"]; -$insn_data{op_redoop} = [119, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_nextop} = [120, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_lastop} = [121, \&PUT_opindex, "GET_opindex"]; -$insn_data{cop_label} = [122, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_stashpv} = [123, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_file} = [124, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_stash} = [125, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_filegv} = [126, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_seq} = [127, \&PUT_U32, "GET_U32"]; -$insn_data{cop_arybase} = [128, \&PUT_I32, "GET_I32"]; -$insn_data{cop_line} = [129, \&PUT_U32, "GET_U32"]; -$insn_data{cop_warnings} = [130, \&PUT_svindex, "GET_svindex"]; -$insn_data{main_start} = [131, \&PUT_opindex, "GET_opindex"]; -$insn_data{main_root} = [132, \&PUT_opindex, "GET_opindex"]; -$insn_data{main_cv} = [133, \&PUT_svindex, "GET_svindex"]; -$insn_data{curpad} = [134, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_begin} = [135, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_init} = [136, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_end} = [137, \&PUT_svindex, "GET_svindex"]; -$insn_data{curstash} = [138, \&PUT_svindex, "GET_svindex"]; -$insn_data{defstash} = [139, \&PUT_svindex, "GET_svindex"]; -$insn_data{data} = [140, \&PUT_U8, "GET_U8"]; -$insn_data{incav} = [141, \&PUT_svindex, "GET_svindex"]; -$insn_data{load_glob} = [142, \&PUT_svindex, "GET_svindex"]; -$insn_data{regex_padav} = [143, \&PUT_svindex, "GET_svindex"]; -$insn_data{dowarn} = [144, \&PUT_U8, "GET_U8"]; -$insn_data{comppad_name} = [145, \&PUT_svindex, "GET_svindex"]; -$insn_data{xgv_stash} = [146, \&PUT_svindex, "GET_svindex"]; -$insn_data{signal} = [147, \&PUT_strconst, "GET_strconst"]; -$insn_data{formfeed} = [148, \&PUT_svindex, "GET_svindex"]; +$insn_data{op_sv} = [113, \&PUT_svindex, "GET_svindex"]; +$insn_data{op_padix} = [114, \&PUT_PADOFFSET, "GET_PADOFFSET"]; +$insn_data{op_pv} = [115, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{op_pv_tr} = [116, \&PUT_op_tr_array, "GET_op_tr_array"]; +$insn_data{op_redoop} = [117, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_nextop} = [118, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_lastop} = [119, \&PUT_opindex, "GET_opindex"]; +$insn_data{cop_label} = [120, \&PUT_pvindex, "GET_pvindex"]; +$insn_data{cop_stashpv} = [121, \&PUT_pvindex, "GET_pvindex"]; +$insn_data{cop_file} = [122, \&PUT_pvindex, "GET_pvindex"]; +$insn_data{cop_stash} = [123, \&PUT_svindex, "GET_svindex"]; +$insn_data{cop_filegv} = [124, \&PUT_svindex, "GET_svindex"]; +$insn_data{cop_seq} = [125, \&PUT_U32, "GET_U32"]; +$insn_data{cop_arybase} = [126, \&PUT_I32, "GET_I32"]; +$insn_data{cop_line} = [127, \&PUT_U32, "GET_U32"]; +$insn_data{cop_warnings} = [128, \&PUT_svindex, "GET_svindex"]; +$insn_data{main_start} = [129, \&PUT_opindex, "GET_opindex"]; +$insn_data{main_root} = [130, \&PUT_opindex, "GET_opindex"]; +$insn_data{main_cv} = [131, \&PUT_svindex, "GET_svindex"]; +$insn_data{curpad} = [132, \&PUT_svindex, "GET_svindex"]; +$insn_data{push_begin} = [133, \&PUT_svindex, "GET_svindex"]; +$insn_data{push_init} = [134, \&PUT_svindex, "GET_svindex"]; +$insn_data{push_end} = [135, \&PUT_svindex, "GET_svindex"]; +$insn_data{curstash} = [136, \&PUT_svindex, "GET_svindex"]; +$insn_data{defstash} = [137, \&PUT_svindex, "GET_svindex"]; +$insn_data{data} = [138, \&PUT_U8, "GET_U8"]; +$insn_data{incav} = [139, \&PUT_svindex, "GET_svindex"]; +$insn_data{load_glob} = [140, \&PUT_svindex, "GET_svindex"]; +$insn_data{regex_padav} = [141, \&PUT_svindex, "GET_svindex"]; +$insn_data{dowarn} = [142, \&PUT_U8, "GET_U8"]; +$insn_data{comppad_name} = [143, \&PUT_svindex, "GET_svindex"]; +$insn_data{xgv_stash} = [144, \&PUT_svindex, "GET_svindex"]; +$insn_data{signal} = [145, \&PUT_strconst, "GET_strconst"]; +$insn_data{formfeed} = [146, \&PUT_svindex, "GET_svindex"]; my ($insn_name, $insn_data); while (($insn_name, $insn_data) = each %insn_data) { diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm index 34339cc231..f663d353a7 100644 --- a/ext/B/B/Deparse.pm +++ b/ext/B/B/Deparse.pm @@ -18,8 +18,9 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring OPpSORT_REVERSE OPpSORT_INPLACE OPpSORT_DESCEND OPpITER_REVERSED SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG CVf_METHOD CVf_LOCKED CVf_LVALUE CVf_ASSERTION - PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_SKIPWHITE - PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED); + PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE + PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED + RXf_SKIPWHITE); $VERSION = 0.81; use strict; use vars qw/$AUTOLOAD/; @@ -4184,7 +4185,7 @@ sub pp_split { # handle special case of split(), and split(' ') that compiles to /\s+/ $kid = $op->first; - if ($kid->flags & OPf_SPECIAL and $kid->pmflags & PMf_SKIPWHITE) { + if ( $kid->flags & OPf_SPECIAL and $kid->reflags & RXf_SKIPWHITE ) { $exprs[0] = "' '"; } diff --git a/ext/B/defsubs_h.PL b/ext/B/defsubs_h.PL index eefaa7e63f..8f943c65fc 100644 --- a/ext/B/defsubs_h.PL +++ b/ext/B/defsubs_h.PL @@ -67,13 +67,15 @@ if ($] >= 5.009) { doconst(AVf_REAL); } -foreach my $file (qw(op.h cop.h)) +foreach my $tuple (['op.h'],['cop.h'],['regexp.h','RXf_']) { + my $file = $tuple->[0]; + my $pfx = $tuple->[1] || ''; my $path = $^O eq 'MacOS' ? ":::$file" : "../../$file"; open(OPH,"$path") || die "Cannot open $path:$!"; while (<OPH>) { - doconst($1) if (/#define\s+(\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/); + doconst($1) if (/#define\s+($pfx\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/); } close(OPH); } diff --git a/ext/B/t/concise-xs.t b/ext/B/t/concise-xs.t index b19cf59926..76b5df884b 100644 --- a/ext/B/t/concise-xs.t +++ b/ext/B/t/concise-xs.t @@ -117,7 +117,7 @@ use Getopt::Std; use Carp; use Test::More tests => ( # per-pkg tests (function ct + require_ok) 40 + 16 # Data::Dumper, Digest::MD5 - + 517 + 239 # B::Deparse, B + + 517 + 262 # B::Deparse, B + 595 + 190 # POSIX, IO::Socket + 323 * ($] > 5.009) + 17 * ($] >= 5.009003) @@ -142,7 +142,7 @@ my $testpkgs = { Data::Dumper => { XS => [qw/ bootstrap Dumpxs /], dflt => 'perl' }, B => { - dflt => 'constant', # all but 47/274 + dflt => 'constant', # all but 47/297 skip => [ 'regex_padav' ], # threaded only perl => [qw( walksymtable walkoptree_slow walkoptree_exec @@ -176,7 +176,7 @@ my $testpkgs = { OPpSORT_REVERSE OPpTARGET_MY OPpTRANS_COMPLEMENT OPpTRANS_DELETE OPpTRANS_SQUASH PMf_CONTINUE PMf_EVAL PMf_EXTENDED PMf_FOLD PMf_GLOBAL PMf_KEEP - PMf_MULTILINE PMf_ONCE PMf_SINGLELINE PMf_SKIPWHITE + PMf_MULTILINE PMf_ONCE PMf_SINGLELINE RXf_SKIPWHITE POSTFIX SVf_FAKE SVf_IOK SVf_NOK SVf_POK SVf_ROK SVpad_OUR SVs_RMG SVs_SMG SWAP_CHILDREN OPpPAD_STATE /], |