[Chapter 8] 8.10 B::Bytecode
Author: Ellen Siever, Stephen Spainhour & Nathan Patwardhan
Date: 1999-07-02T01:42:00Z

#

| Chapter 8 Standard Modules |

## 8.10 B::Bytecode

The bytecode backend for the Perl compiler. Takes Perl source code and generates platform-independent bytecode that can be run with the byteperl executable or can be loaded via the `byteload_fh` function in the B module. Compiling with the Bytecode backend won't speed up execution of your program, but it may improve start-up time. Invoke as:

>     perl -MO=Bytecode[,options] program

where `program` is the name of the Perl script to compile. Any non-option arguments are treated as the names of objects to be saved; the main program is assumed if there are no extra arguments. Possible options are:

--

  Forces end of options.

-Dopts

  Debug options, which can be either concatenated or specified separately. Possible options are:

  `a`

    Tells the bytecode assembler to include assembler source in its output as bytecode comments.

  `b`

    Prints debugging information about bytecompiler progress.

  `C`

    Prints each CV from the final walk through the symbol tree.

  `o`

    Prints each OP as it's processed.

-fopt

  Forces individual optimizations on or off. Preceding an optimization with `no-` turns that option off (e.g., `no-compress-nullops`). Possible values of opt are:

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

  `compress-nullops`

    Fills in only the necessary fields of ops that have been optimized away by Perl's internal compiler.

  `omit-sequence-numbers`

    Leaves out the code to fill in the `op_seq` field for all ops that are used only by Perl's internal compiler.

  `strip-syntax-tree`

    Leaves out the code to fill in the internal syntax tree pointers. Use of this option breaks any `goto` `label` statements and prevents later recompiling or disassembling of the resulting program.

-m

  Compiles as a module rather than as a standalone program.

-ofilename

  Sends output to filename instead of STDOUT.

-O[`n`]

  Sets the optimization level to n, where n is an integer. n defaults to 1. `-O1` sets `-fcompress-nullops -fomit-sequence-numbers`, and `-O6` adds `-fstrip-syntax-tree`.

-S

  Outputs bytecode assembler source instead of assembling it into bytecode.

8.9 B::Bblock |  | 8.11 B::C