Package avail. interpreter. levelTwo
Types
HiddenVariableShift provides the amount to shift 1 to the left to get the mask for a L2Operation.HiddenVariable subclass.
This class is used to simulate the effect of level one nybblecodes during execution of the L2_INTERPRET_LEVEL_ONE instruction, on behalf of an Interpreter.
L2AbstractInstruction is the common ancestor of L2Instruction and L2SimpleInstruction, generated by the L2Generator and L2SimpleTranslator, respectively.
A Level Two chunk represents an optimized implementation of a compiled code object.
L2Instruction is the foundation for all instructions understood by the level two Avail interpreter. These instructions are model objects generated and manipulated by the L2Generator.
A Level Two chunk represents an optimized implementation of a compiled code object.
An L2NamedOperandType is used to specify both an L2OperandType and a String naming its purpose with respect to some L2Operation. This effectively allows operations to declare named operands, increasing the descriptiveness of the level two instruction set. The names are not used in any way at runtime.
An L2OperandDispatcher acts as a visitor for the actual operands of level two instructions.
An L2OperandType specifies the nature of a level two operand. It doesn't fully specify how the operand is used, but it does say whether the associated register is being read or written or both.
The instruction set for the Level Two Avail interpreter. Avail programs can only see as far down as the level one nybblecode representation. Level two translations are invisibly created as necessary to boost performance of frequently executed code. Technically level two is an optional part of an Avail implementation, but modern hardware has enough memory that this should really always be present.
A Level Two chunk represents a simply optimized implementation of an A_RawFunction. It's composed of L2SimpleInstructions, and doesn't have any deep optimizations. It does, however, attempt to eliminate dispatches for monomorphic call sites, as well as return type checks, whenever possible.
ReadsHiddenVariable indicates that an L2Instruction using the annotated L2Operation will begin by reading from a particular kind of s. This annotation is used to restrict code motion by the L2Optimizer.
WritesHiddenVariable indicates that an L2Instruction using the annotated L2Operation will finish by writing to a particular kind of s. This annotation is used to restrict code motion by the L2Optimizer.