L2Operand Type
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.
Author
Mark van Gulik
Todd L Smith
Entries
An L2ConstantOperand holds a Java object of any type, except AvailObject, which should be handled with a CONSTANT operand.
An L2ConstantOperand holds a specific AvailObject. The value is always made immutable for safety during L2 code generation. And then made shared prior to installing the L2Chunk.
An L2IntImmediateOperand holds an Int value.
An L2FloatImmediateOperand holds a double value.
An L2PcOperand holds an offset into the chunk's instructions, presumably for the purpose of branching there at some time and under some condition.
An L2PrimitiveOperand holds a Primitive to be invoked.
Like a CONSTANT, the L2SelectorOperand holds the actual AvailObject, but it is known to be an A_Bundle. The L2Chunk depends on this bundle, invalidating itself if its definitions change.
The L2ReadBoxedOperand holds the L2BoxedRegister that will be read.
The L2WriteBoxedOperand holds the L2BoxedRegister that will be written.
The L2ReadIntOperand holds the L2IntRegister that will be read.
The L2WriteIntOperand holds the L2IntRegister that will be written.
The L2WriteFloatOperand holds the L2FloatRegister that will be read.
The L2WriteFloatOperand holds the L2FloatRegister that will be written.
The L2ReadVectorOperand holds a List of L2ReadBoxedOperands which will be read.
The L2ReadVectorOperand holds a List of L2ReadBoxedOperands which will be read.
The L2ReadVectorOperand holds a List of L2ReadBoxedOperands which will be read.
The L2PcVectorOperand holds a List of L2PcOperands which can be the targets of a multi-way jump.
The L2CommentOperand holds descriptive text that does not affect analysis or execution of level two code. It is for diagnostic purposes only.
Properties
Functions
Create a L2NamedOperandType from the receiver and a String naming its role within some L2Operation.
Create a L2NamedOperandType from the receiver, a String naming its role within some L2Operation, and a designator of its purpose. The purpose is used to designate branch edges, and correlate them to register writes that only happen if the corresponding edge is taken.
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.