OperandRegisterTransformer

An OperandRegisterTransformer is an L2OperandDispatcher suitable for copying operands for the enclosing L2Regenerator, when operand equivalency is via L2Register identity (i.e., when generatePhis is false).

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard

The current operand being transformed. It gets set before a dispatch and read afterward, allowing the dispatch operation to replace it.

Functions

Link copied to clipboard
open override fun doOperand(operand: L2ArbitraryConstantOperand)

Process an operand which is an arbitrary Java constant.

open override fun doOperand(operand: L2CommentOperand)

Process an operand which is merely a comment.

open override fun doOperand(operand: L2ConstantOperand)

Process an operand which is a constant.

open override fun doOperand(operand: L2FloatImmediateOperand)

Process an operand which is a double immediate value.

open override fun doOperand(operand: L2IntImmediateOperand)

Process an operand which is an Int immediate value.

open override fun doOperand(operand: L2PcOperand)

Process an operand which is a constant level two offset into a L2Chunk's L2Instruction sequence.

open override fun doOperand(operand: L2PcVectorOperand)

Process an operand which is a vector of L2PcOperands.

open override fun doOperand(operand: L2PrimitiveOperand)

Process an operand which is a Primitive number.

open override fun doOperand(operand: L2ReadBoxedVectorOperand)

Process an operand which is a read of a vector of L2BoxedRegisters.

open override fun doOperand(operand: L2ReadFloatVectorOperand)

Process an operand which is a read of a vector of L2FloatRegisters.

open override fun doOperand(operand: L2ReadIntVectorOperand)

Process an operand which is a read of a vector of L2IntRegisters.

open override fun doOperand(operand: L2SelectorOperand)

Process an operand which is a literal A_Bundle which the resulting L2Chunk should be dependent upon for invalidation.

open override fun doOperand(operand: L2ReadBoxedOperand)

Process an operand which is a read of an AvailObject register.

open override fun doOperand(operand: L2ReadFloatOperand)

Process an operand which is a read of a double register.

open override fun doOperand(operand: L2ReadIntOperand)

Process an operand which is a read of an Int register.

open override fun doOperand(operand: L2WriteBoxedOperand)

Process an operand which is a write of an AvailObject register.

open override fun doOperand(operand: L2WriteFloatOperand)

Process an operand which is a write of a double register.

open override fun doOperand(operand: L2WriteIntOperand)

Process an operand which is a write of an Int register.

Link copied to clipboard

Transform the given L2BasicBlock. Use the blockMap, adding an entry if necessary.

Link copied to clipboard
open fun mapSemanticValue(oldSemanticValue: L2SemanticValue): L2SemanticValue

Transform the given L2SemanticValue into another. By default this does nothing, but for a subclass that performs inlining, this can be useful for indicating that a semantic value is for the inlined frame rather than outer frame.