


ext::B::B::BytecoPerlpProgrammers Referencext::B::B::Bytecode(3p)


NAME
       B::Bytecode - Perl compiler's bytecode backend

SYNOPSIS
               perl -MO=Bytecode[,OPTIONS] foo.pl


DESCRIPTION
       This compiler backend takes Perl source and generates a
       platform-independent bytecode encapsulating code to load
       the internal structures perl uses to run your program.
       When the generated bytecode is loaded in, your program is
       ready to run, reducing the time which perl would have
       taken to load and parse your program into its internal
       semi-compiled form. That means that compiling with this
       backend will not help improve the runtime execution speed
       of your program but may improve the start-up time.
       Depending on the environment in which your program runs
       this may or may not be a help.

       The resulting bytecode can be run with a special byteperl
       executable or (for non-main programs) be loaded via the
       "byteload_fh" function in the B module.

OPTIONS
       If there are any non-option arguments, they are taken to
       be names of objects to be saved (probably doesn't work
       properly yet).  Without extra arguments, it saves the main
       program.

       -ofilename
           Output to filename instead of STDOUT.

       -afilename
           Append output to filename.

       --  Force end of options.

       -f  Force optimisations on or off one at a time. Each can
           be preceded by no- to turn the option off (e.g. -fno-
           compress-nullops).

       -fcompress-nullops
           Only fills in the necessary fields of ops which have
           been optimised away by perl's internal compiler.

       -fomit-sequence-numbers
           Leaves out code to fill in the op_seq field of all ops
           which is only used by perl's internal compiler.

       -fbypass-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.



2001-05-24                 perl v5.6.1                          1





ext::B::B::BytecoPerlpProgrammers Referencext::B::B::Bytecode(3p)


       -On Optimisation level (n = 0, 1, 2, ...). -O means -O1.
           -O1 sets -fcompress-nullops -fomit-sequence numbers.
           -O2 adds -fbypass-nullops.

       -D  Debug options (concatenated or separate flags like
           "perl -D").

       -Do Prints each OP as it's processed.

       -Db Print debugging information about bytecompiler
           progress.

       -Da Tells the (bytecode) assembler to include source
           assembler lines in its output as bytecode comments.

       -DC Prints each CV taken from the final symbol tree walk.

       -S  Output (bytecode) assembler source rather than piping
           it through the assembler and outputting bytecode.

       -upackage
           Stores package in the output.

EXAMPLES
           perl -MO=Bytecode,-O6,-ofoo.plc,-umain foo.pl

           perl -MO=Bytecode,-S,-umain foo.pl > foo.S
           assemble foo.S > foo.plc

       Note that "assemble" lives in the "B" subdirectory of your
       perl library directory. The utility called perlcc may also
       be used to help make use of this compiler.

           perl -MO=Bytecode,-uFoo,-oFoo.pmc Foo.pm


BUGS
       Output is still huge and there are still occasional
       crashes during either compilation or ByteLoading. Current
       status: experimental.

AUTHORS
       Malcolm Beattie, "mbeattie@sable.ox.ac.uk" Benjamin Stuhl,
       "sho_pi@hotmail.com"













2001-05-24                 perl v5.6.1                          2


