1N/A# Copyright (c) 2003 Enache Adrian. All rights reserved. 1N/A# This module is free software; you can redistribute and/or modify 1N/A# it under the same terms as Perl itself. 1N/A################################################# 1N/A################################################# 1N/A # my $pmrootix = $hv->PMROOT->ix; # XXX 1N/A # asm "xhv_pmroot", $pmrootix; # XXX 1N/A next if $i =
not $i;
1N/A################################################# 1N/A # asm "xio_flags", ord($io->IoFLAGS) & ~32; # XXX XXX 1N/A###################################################### 1N/A # trick for /$a/o in pp_regcomp 1N/A # change #18774 made my life hard 1N/A# not needed if no pseudohashes 1N/A# deal with sort / formline 1N/A # asm "op_seq", -1; XXX don't allocate OPs piece by piece 1N/A # my $pmnextix = $op->pmnext->ix; # XXX 1N/A # asm "op_pmnext", $pmnextix; # XXX 1N/A asm "op_pv_tr",
join ',',
length($
pv)/
2,
unpack(
"s*", $
pv);
1N/A################################################# 1N/A # XXX BEGIN { goto A while 1; A: } 1N/A # this kludge needed for tests 1N/A *
nice =
sub ($) {
print "\n@_\n" };
1N/A $
head =
"#! $^X\nuse ByteLoader $ByteLoader::VERSION;\n";
1N/A }
elsif (/^-o(.*)$/) {
1N/A }
elsif (/^-f(.*)$/) {
1N/A }
elsif (/^-s(.*)$/) {
1N/A # this is here for the testsuite 1N/A /^
#\s*line\s+\d+\s+("?)(.*)\1/ and $files{$2} = 1; 1N/A bwarn "keeping the syntax tree: \"goto\" op found";
1N/AB::Bytecode - Perl compiler's bytecode backend 1N/ACompiles a Perl script into a bytecode format that could be loaded 1N/Alater by the ByteLoader module and executed as a regular Perl script. 1N/A $ perl -MO=Bytecode,-H,-ohi -e 'print "hi!\n"' 1N/ASave all the BEGIN blocks. Normally only BEGIN blocks that C<require> 1N/Aother files (ex. C<use Foo;>) are saved. 1N/Aprepend a C<use ByteLoader VERSION;> line to the produced bytecode. 1N/Akeep the syntax tree - it is stripped by default. 1N/A=item B<-o>I<outfile> 1N/Aput the bytecode in <outfile> instead of dumping it to STDOUT. 1N/Ascan the script for C<# line ..> directives and for <goto LABEL> 1N/Aexpressions. When gotos are found keep the syntax tree. 1N/AC<BEGIN { goto A: while 1; A: }> won't even compile. 1N/AC<?...?> and C<reset> do not work as expected. 1N/Avariables in C<(?{ ... })> constructs are not properly scoped. 1N/Ascripts that use source filters will fail miserably. 1N/AThere are also undocumented bugs and options. 1N/ATHIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK. 1N/AOriginally written by Malcolm Beattie <mbeattie@sable.ox.ac.uk> and 1N/Amodified by Benjamin Stuhl <sho_pi@hotmail.com>. 1N/ARewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d.