Package-level declarations
Types
An L2ArbitraryConstantOperand is an operand of type L2OperandType.ARBITRARY_CONSTANT. It also holds the actual Java object that is the constant. The object should not generally be an AvailObject, since that's supposed to be handled by an L2ConstantOperand.
An L2CommentOperand holds a descriptive string during level two translation, but this operand emits no actual data into the wordcode stream.
An L2ConstantOperand is an operand of type L2OperandType.CONSTANT. It also holds the actual AvailObject that is the constant.
An L2FloatImmediateOperand is an operand of type L2OperandType.FLOAT_IMMEDIATE, which holds a double value representing itself.
An L2IntImmediateOperand is an operand of type L2OperandType.INT_IMMEDIATE, which holds an Int value representing itself.
An L2Operand knows its L2OperandType and any specific value that needs to be captured for that type of operand.
An L2PcOperand is an operand of type L2OperandType.PC. It refers to a target L2BasicBlock, that either be branched to at runtime, or captured in some other way that flow control may end up there.
An L2PcVectorOperand is an operand of type L2OperandType.PC_VECTOR. It holds a List of L2PcOperands.
An L2PrimitiveOperand is an operand of type L2OperandType.PRIMITIVE. The specific Primitive is captured.
An L2ReadBoxedOperand is an operand of type L2OperandType.READ_BOXED. It holds the actual L2BoxedRegister that is to be accessed.
An L2ReadBoxedVectorOperand is an operand of type L2OperandType.READ_BOXED_VECTOR. It holds a List of L2ReadBoxedOperands.
An L2ReadFloatOperand is an operand of type L2OperandType.READ_FLOAT. It holds the actual L2FloatRegister that is to be accessed.
An L2ReadFloatVectorOperand is an operand of type L2OperandType.READ_FLOAT_VECTOR. It holds a List of L2ReadFloatOperands.
An L2ReadIntOperand is an operand of type L2OperandType.READ_INT. It holds the actual L2IntRegister that is to be accessed.
An L2ReadIntVectorOperand is an operand of type L2OperandType.READ_INT_VECTOR. It holds a List of L2ReadIntOperands.
L2ReadOperand abstracts the capabilities of actual register read operands.
An L2ReadVectorOperand is an operand of type L2OperandType.READ_BOXED_VECTOR. It holds a List of L2ReadOperands.
An L2SelectorOperand is an operand of type L2OperandType.SELECTOR. It holds the message bundle that knows the method to invoke.
An L2WriteBoxedOperand is an operand of type L2OperandType.WRITE_BOXED. It holds the actual L2BoxedRegister that is to be accessed.
An L2WriteFloatOperand is an operand of type L2OperandType.WRITE_FLOAT. It holds the actual L2FloatRegister that is to be accessed.
An L2WriteIntOperand is an operand of type L2OperandType.WRITE_INT. It holds the actual L2IntRegister that is to be accessed.
L2WriteOperand abstracts the capabilities of actual register write operands.
This mechanism describes a restriction of a type without saying what it's to be applied to.