Permalink
Browse files

release 1.09

	* C.pm: Cut down the number of AUTOLOAD'ed optrees, search only on 
	  empty gv->cv (31).
	Added very unsafe -O4/-fcop to eliminate most cops and file + line numbers.
	Added faster -fav-init to -O2, less unneeded av_extend().
	Get rid of fbm_compile (11). Only 5.8.9 is broken.
	* CC.pm (1.02): partially fix eval "" for >=5.8.9, wrong CORE cc_runtime.h 
	  definition. (test 29 - eval "")
	* t/test.pl, t/c*.t: Simplify C/CC testsuite.
	* t/testc.sh: fixed -E
	Added -o for orig, no -Mblib
	* t/c_o3.t, t/c_o4.t: added




git-svn-id: http://perl-compiler.googlecode.com/svn/trunk@193 ed534f1a-1453-0410-ab30-dfc593a8b23c
  • Loading branch information...
1 parent 70c048e commit 61599944b1ffcd70b2ab435bcb2fa33d47542a7f Reini Urban committed Dec 27, 2009
Showing with 315 additions and 155 deletions.
  1. +11 −2 Changes
  2. +2 −0 MANIFEST
  3. +12 −6 NOTES
  4. +33 −11 STATUS
  5. +1 −1 Todo
  6. +159 −86 lib/B/C.pm
  7. +33 −7 lib/B/CC.pm
  8. +3 −3 t/bytecode.t
  9. +3 −3 t/c.t
  10. +1 −1 t/c_o1.t
  11. +1 −1 t/c_o2.t
  12. +2 −1 t/cc.t
  13. +4 −4 t/cc_o1.t
  14. +3 −3 t/cc_o2.t
  15. +47 −26 t/testc.sh
View
13 Changes
@@ -3,9 +3,18 @@
The Perl compiler was in CORE from alpha4 until Perl 5.9.4 and worked
quite fine with Perl 5.6 and 5.8
-1.09 2009-12-?? rurban
+1.09 2009-12-27 rurban
+ * C.pm: Cut down the number of AUTOLOAD'ed optrees, search only on
+ empty gv->cv (31).
+ Added very unsafe -O4/-fcop to eliminate most cops and file + line numbers.
+ Added faster -fav-init to -O2, less unneeded av_extend().
+ Get rid of fbm_compile (11). Only 5.8.9 is broken.
+ * CC.pm (1.02): partially fix eval "" for >=5.8.9, wrong CORE cc_runtime.h
+ definition. (test 29 - eval "")
* t/test.pl, t/c*.t: Simplify C/CC testsuite.
- * t/c_o3.t: added
+ * t/testc.sh: fixed -E
+ Added -o for orig, no -Mblib
+ * t/c_o3.t, t/c_o4.t: added
1.08 2009-12-23 rurban
Adapt coding guidelines, add C and cperl coda. Reformat sources.
View
@@ -71,6 +71,8 @@ t/bytecode.t
t/c.t
t/c_o1.t
t/c_o2.t
+t/c_o3.t
+t/c_o4.t
t/cc.t
t/cc_o1.t
t/cc_o2.t
View
18 NOTES
@@ -42,7 +42,7 @@ CC backend invocation
-q Be quiet. STDOUT goes to $O::BEGIN_output
-qq Be very quiet. Also suppress "Syntax OK"
-ofilename Output to filename instead of STDOUT
-NYI -v Be verbose.
+ -v Be verbose.
-- Force end of options
-uPackname Force apparently unused subs from package Packname to
be compiled. This allows programs to use eval "foo()"
@@ -113,19 +113,19 @@ Bytecode backend invocation
-ofilename Output to filename instead of STDOUT.
NYI -v Be verbose.
-- Force end of options.
- -f Force optimisations on or off one at a time.
+NYI -f Force optimisations on or off one at a time.
Each can be preceded by no- to turn the option off.
- compress-nullops
+NYI compress-nullops
Only fills in the necessary fields of ops which have
been optimised away by perl's internal compiler.
- omit-sequence-numbers
+NYI omit-sequence-numbers
Leaves out code to fill in the op_seq field of all ops
which is only used by perl's internal compiler.
- bypass-nullops
+NYI bypass-nullops
If op->op_next ever points to a NULLOP, replaces the
op_next field with the first non-NULLOP in the path
of execution.
- strip-syntax-tree
+NYI strip-syntax-tree
Leaves out code to fill in the pointers which link the
internal syntax tree together. They're not needed at
run-time but leaving them out will make it impossible
@@ -186,3 +186,9 @@ O module
parsing prog.pl (just as it would with "perl -c prog.pl") and after
doing so, assuming there are no parse-time errors, the CHECK block
of O gets called and the actual backend compilation happens. Phew.
+
+Od debugging module. See L<B::Debugger>
+ Used with "perl -d -MOd=Backend,foo,bar prog.pl" to invoke the backend
+ B::Backend with options foo and bar. Od delays the invocation of the sub
+ B::Backend::compile() with arguments foo and bar to the INIT block, so that
+ you can step through the backend with the perl source debugger.
View
44 STATUS
@@ -73,34 +73,57 @@ t/bytecode broken/not used
t/c 15,27 | 15
t/c_o1 15,27 | 15
t/c_o2 15,27 | 15
+t/c_o3 15,27 | 15
+t/c_o3 10,12,15,19,25,27,29
t/cc 15,18,21,25,27,29,30
t/cc_o1 15,18,21,25..27,29,30
t/cc_o2 10,15,16,18,21,25..27,29,30
+5.8.0
+redhat perl http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6576363.html:
+byterun.c:678: duplicate case value
+byterun.c:669: previously used here
+
+5.8.3 + 5.8.5 threaded
+cpantesters http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6576377.html
+http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6576274.html
+c 7
+c_o1-2: 7,11
+cc: 3,7,29
+cc_o1-2: 3,7
+
+freebsd 5.10.1 c+cc fails on 28 generally, cc passed 12
+freebsd 5.8.9: c_o1-2: 11 (fixed with 1.09?)
+
5.8.9: (5.8.8, 5.8.9 + 5.8.8-nt)
t/bytecode ok
-t/c 27
-t/c_o1 27
-t/c_o2 27
-t/cc 15,18,21,25,27,30
-t/cc_o1 15,18,21,25..27,29,30
-t/cc_o2 10,15,16,18,21,25..27,29,30
-
+t/c 27
+t/c_o1 27
+t/c_o2 27
+t/c_o3 27
+t/c_o4 10,12,15,19,25 | 10,12,19,25,27
+t/cc 15,18,21,25,27,30
+t/cc_o1 15,18,21,25..27,30
+t/cc_o2 10,15,16,18,21,25..27,30
5.10.1: | non-threaded
-t/bytecode 27,29 | 9,10,12,27,29
+t/bytecode ok | 9,10,12,27,29
t/c ok | 15
t/c_o1 ok | 15
t/c_o2 ok | 15
+t/c_o3 ok | 15
+t/c_o4 10,12,19,25
t/cc 15,18,21,25,29,30 | +12
t/cc_o1 15,18,21,25,26,29,30 | +12
t/cc_o2 10,15,16,18,21,25,26,29,30 | +12
5.11.2: | non-threaded
-t/bytecode 9,10,12,16,21,27,29
+t/bytecode 9,10,12,16,21,27,29,31
t/c 15,16
t/c_o1 15,16
t/c_o2 15,16
+t/c_o3 15,16
+t/c_o4 10,12,15,16,19,25
t/cc 15,16,18,21,25,29,30 | +12
t/cc_o1 15,16,18,21,25,26,29,30 | +12
t/cc_o2 10,15,16,18,21,25,26,29,30 | +12
@@ -116,8 +139,7 @@ TODO for B::C
destruction: -O1 static PVs and HEKs (mult.) since 5.10
DONE:
-fixed GV -> BM magic (index) >= 5.10 in Bytecode without needing fbm_compile. Need that
-for B::C also.
+fixed GV -> BM magic (index) without needing fbm_compile. Just 5.8.9 not.
fixed non-xsub AUTOLOAD (31) with 1.08
View
2 Todo
@@ -35,7 +35,7 @@ ByteLoader compatibility: version, platform. eventually Bytecode version
collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10)
and GV method names package::name. (partially done)
proper static init of PMOP SV's (only works dynamic >= 5.10)
-proper static init of PVBM/FBM (partially finished)
+proper static init of PVBM/FBM
collapse LISTOPs to UNOPs or BASEOPs
compile-time qw(), constant subs
global analysis of variables, type hints etc.
Oops, something went wrong.

0 comments on commit 6159994

Please sign in to comment.