Permalink
Browse files

B-C-1.04_08

git-svn-id: http://perl-compiler.googlecode.com/svn/trunk@9 ed534f1a-1453-0410-ab30-dfc593a8b23c
  • Loading branch information...
1 parent 534c815 commit 178a2ce4a0a1952c6facedcf2f2ce566846c54ac Reini Urban committed Jul 28, 2008
Showing with 255 additions and 119 deletions.
  1. +15 −1 Changes
  2. +1 −1 META.yml
  3. +5 −3 Makefile.PL
  4. +29 −15 lib/B/Bytecode.pm
  5. +141 −76 lib/B/C.pm
  6. +10 −10 lib/B/CC.pm
  7. +25 −8 lib/B/Debug.pm
  8. +6 −3 t/testc.sh
  9. +23 −2 t/testplc.sh
View
16 Changes
@@ -1,6 +1,20 @@
Started with B-C-1.04_01. The perl compiler was previously in CORE.
TODO: Try to get info about earlier versions.
+1.04_08 2008-02-22 rurban
+ * fixed t/b.t tests for 5.11 (REGEXP, ref RV => IV)
+ * fixed Makefile.PL deps to ignore the interim .pl files
+ * added PMOP reflags
+ * added madprop to B-1.18_01 and B::C (if provided by B)
+ * enhanced B::Debug 1.05_02
+ * fixed B::C PL_cshlen (already initialized since 5.10)
+ * fixed B::C GvFILE
+ * fixed various (SV)xpv list casts and inits,
+ * fixed B::C xpvnv_list for 5.10
+ * fixed B::C xpvio_list for 5.10
+ * fixed B::C pmopsect for 5.11
+ * bootstrap also all $Config{static_ext}, not only dynamic stashes
+
1.04_07 2008-02-20 rurban
* moved bstate->bs_pv.xpv_pv slot to bs_pv.xiv_u.xivu_p1
* fixed pv_free
@@ -13,7 +27,7 @@ TODO: Try to get info about earlier versions.
1.04_06 2008-02-19 rurban
* no crashes anymore for 5.10, just op_pmflags & PMf_ONCE assertions.
* blead@32980 crashes in tests 11,16,17,18
- * enhanced B::Debug
+ * enhanced B::Debug (no version bump)
* fixed general op_list inits, and specials for av, hv
* almost fixed pv within sv handling
* added -O=C,-DS for SV debugging
View
@@ -1,6 +1,6 @@
--- #YAML:1.0
name: B-C
-version: 1.04_07
+version: 1.04_08
abstract: ~
license: ~
author: ~
View
@@ -28,9 +28,11 @@ sub headerpath {
package MY;
-#sub libscan {
-# return 0 unless $_[1] =~ /(ByteLoader|\.pm)$/;
-#}
+sub libscan {
+ # ignore temp testing files
+ return 0 if $_[1] =~ /(bytecode\d+\.pl|ccode\d+\..*|-588\.pod)$/;
+ return $_[1];
+}
sub post_constants {
"\nLIBS = $Config::Config{libs}\n"
View
@@ -572,8 +572,11 @@ sub B::PMOP::bsave {
# 5.9 $op->pmtargetoff?
}
$op->B::BINOP::bsave($ix);
- if (1 or $op->pmstashpv) { # avoid empty stash? if (table) pre-compiled else re-compile
+ if ($op->pmstashpv) { # avoid empty stash? if (table) pre-compiled else re-compile
asm "op_pmstashpv", pvix $op->pmstashpv;
+ } else {
+ bwarn("op_pmstashpv main") if $debug{M};
+ asm "op_pmstashpv", pvix "main";
}
} else {
$rrop = "op_pmreplrootgv";
@@ -595,23 +598,34 @@ sub B::PMOP::bsave {
# asm "op_pmnext", $pmnextix; # XXX
asm "newpv", pvstring $op->precomp;
asm "pregcomp";
- } elsif ( VERSION >= 5.011 ) { # full REGEX type
- $ix = pvix $op->precomp; # fixme
- bwarn("PMOP full REGEX type not yet supported");
- asm "pregcomp", $ix;
+ } elsif ( VERSION >= 5.011 ) { # full REGEXP type
+ bwarn("PMOP full REGEXP type not yet supported");
+ #my $re;
+ if ($op->pmoffset) { # regex_pad is regenerated within pregcomp
+ bwarn("PMOP existing regex_pad not yet supported");
+ asm "op_pmflags", $op->pmflags | 2;
+ } else {
+ asm "op_pmflags", $op->pmflags;
+ }
+ asm "op_pmflags", $op->pmflags | 2;
+ asm "newpv", pvstring $op->precomp;
+ asm "op_reflags", $op->reflags;
+ asm "pregcomp";
} elsif ( VERSION >= 5.009 ) {
- # TODO: not just a pv, use a full sv as pattern (2nd arg)
# asm "newsvx", $sv->FLAGS;
# asm "newsv", pvstring $op->precomp;
- #my $svix = $op->B::SV::ix();
- #$op->B::OP::bsave($ix);
- $ix = pvix $op->precomp; # fixme
- # asm "op_reflags", 2;
- # add flag PMf_ONCE to this pv or to the op?
- bwarn("PMOP sv REGEX not yet supported");
- asm "op_pmflags", $op->pmflags | 2;
- bwarn("PMOP pmstashpv: ",$op->pmstashpv, ", pmflags: ",$op->pmflags | 2) if $debug{M};
- asm "pregcomp", $ix;
+ bwarn("PMOP not yet supported");
+ if ($op->pmoffset) { # regex_pad is regenerated within pregcomp
+ bwarn("PMOP existing regex_pad not yet supported");
+ asm "op_pmflags", $op->pmflags | 2;
+ } else {
+ asm "op_pmflags", $op->pmflags;
+ }
+ asm "newpv", pvstring $op->precomp;
+ asm "op_reflags", $op->reflags;
+ # bwarn("PMOP pmstashpv: ",$op->pmstashpv, ", pmflags: ",$op->pmflags | 2) if $debug{M};
+ #asm "pregcomp", $ix;
+ asm "pregcomp";
}
}
Oops, something went wrong.

0 comments on commit 178a2ce

Please sign in to comment.