NAME
B::Bytecode - Perl compiler's bytecode backend
SYNOPSIS
perl -MO=Bytecode[,-H][,-oscript.plc] script.pl
DESCRIPTION
Compiles a Perl script into a bytecode format that could be loaded later by the ByteLoader module and executed as a regular Perl script. This saves time for the optree parsing and compilation and space for the sourcecode in memory.
EXAMPLE
$ perl -MO=Bytecode,-H,-ohi -e 'print "hi!\n"'
$ perl hi
hi!
OPTIONS
- -H
-
Prepend a
use ByteLoader VERSION;
line to the produced bytecode. - -b
-
Save all the BEGIN blocks.
Normally only BEGIN blocks that
require
other files (ex.use Foo;
) or push|unshift to @INC are saved. - -k
-
Keep the syntax tree - it is stripped by default.
- -ooutfile
-
Put the bytecode in <outfile> instead of dumping it to STDOUT.
- -s
-
Scan the script for
# line ..
directives and for <goto LABEL> expressions. When gotos are found keep the syntax tree. - -S
-
Output assembler source rather than piping it through the assembler and outputting bytecode. Without
-q
the assembler source is commented. - -m
-
Compile to a .pmc module rather than to a single standalone .plc program.
Currently this just means that the bytecodes for initialising
main_start
,main_root
,main_cv
andcurpad
are omitted. - -upackage
-
"use package." Might be needed of the package is not automatically detected.
- -q
-
Be quiet.
- -v
-
Be verbose.
- -TI
-
Restore full @INC for running within the CORE testsuite.
- -TF cop file
-
Set the COP file - for running within the CORE testsuite.
- -Do
-
OPs, prints each OP as it's processed
- -DM
-
Debugging flag for more verbose STDERR output.
M for Magic and Matches.
- -DG
-
Debug GV's
- -DA
-
Set developer Assertions, to help find possible obj-indices out of range.
KNOWN BUGS
5.10 threaded fails with setting the wrong MATCH op_pmflags 5.10 non-threaded fails calling anoncode, ...
BEGIN { goto A: while 1; A: }
won't even compile.?...?
andreset
do not work as expected.variables in
(?{ ... })
constructs are not properly scoped.Scripts that use source filters will fail miserably.
Special GV's fail.
NOTICE
There are also undocumented bugs and options.
THIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK.
AUTHORS
Originally written by Malcolm Beattie 1996 and modified by Benjamin Stuhl <sho_pi@hotmail.com>.
Rewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d.
Enhanced by Reini Urban <rurban@cpan.org>, 2008-