# Package com.saxonica.bytecode.util

This package contains utility classes supporting the generation of bytecode and the interface with the ASM library.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  MessageBuilder | Helper interface MeassageBuilder.

- Class Summary
  Class | Description
  --- | ---
  AnnotatedTraceClassVisitor | Subclass of TraceClassVisitor to enable the bytecode listings to be customized
  AnnotatedTraceMethodVisitor | Subclass of the TraceMethodVisitor to customize the bytecode listings
  ByteCodeTrace | Calls to this class are inserted into the bytecode for debugging purposes
  Callback | A convenient place to put static methods that will be called from generated byte code
  CompilerService | Controlling/service class for compilation of expressions to Java bytecode
  CompilerService.GeneratedClassInfo |
  CompilerService.StaticSubClasses |
  CompilerService.StaticVariableInfo |
  GeneratedMethodInfo | Information about the current method whose bytecode is being generated
  GeneratedMethodInfo.LocalSlotInfo |
  Generator | This class is an extension of the ASM-supplied GeneratorAdapter library, containing additional utility and shortcut methods for bytecode generation
  LabelInfo | An ASM label object with some control information to enable better diagnostics
  LoopBodyGenerator | LoopBodyGenerator is code to generate the body of a loop, for example of a ForExpression.
  MessageFromStack | Helper class to generate a run-time exception using a message that is present at the top of the bytecode stack
  MessageTemplate | Helper class to build messages with a predefined prefix string, then runtime text, followed by predefined suffix string
  NamedLabel | Subclass of the ASM Label class that adds a diagnostic name to the label; this enables more intelligible bytecode to be output for diagnostics
  OnEmpty | The OnEmpty class represents an action to be taken by the bytecode generator when compiling an expression to return a "primitive" (unboxed) value such as a double float int long or String (treated as primitive for this purpose).
  OnEmpty.ReturnEmptyString | The ReturnNull subclass indicates that when an expression evaluates to the empty sequence, the value should be returned as a zero-length string.
  OnEmpty.ReturnNull | The ReturnNull subclass indicates that when an expression evaluates to the empty sequence, the value should be returned as a Java null.
  OnEmpty.UnwindAndJump | The UnwindAndJump subclass causes the code generator, when an expression evaluates to the empty sequence, to generate a "goto" instruction to a defined label; but before executing the jump, the stack will be unwound to a known position.

- Exception Summary
  Exception | Description
  --- | ---
  CannotCompileException | Exception indicating that constructs were encountered in the expression tree that cannot be compiled to bytecode

## Package com.saxonica.bytecode.util Description

This package contains utility classes supporting the generation of bytecode and the interface with the ASM library.

Michael H. Kay
Saxonica Limited
28 November 2011

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.