AbstractOperandTransformer

abstract inner class AbstractOperandTransformer : L2OperandDispatcher

An AbstractOperandTransformer is an L2OperandDispatcher suitable for transforming operands for the enclosing L2Regenerator. Subclasses may choose different strategies for mapping the registers underlying the read and write operands.

Constructors

Link copied to clipboard
fun AbstractOperandTransformer()

Functions

Link copied to clipboard
abstract fun doOperand(operand: L2ReadBoxedOperand)

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

abstract fun doOperand(operand: L2ReadFloatOperand)

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

abstract fun doOperand(operand: L2ReadIntOperand)

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

abstract fun doOperand(operand: L2WriteBoxedOperand)

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

abstract fun doOperand(operand: L2WriteFloatOperand)

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

abstract fun doOperand(operand: L2WriteIntOperand)

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

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.

Link copied to clipboard
open fun mapBlock(block: L2BasicBlock): L2BasicBlock

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.

Properties

Link copied to clipboard
var currentOperand: L2Operand? = null

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

Inheritors

Link copied to clipboard
Link copied to clipboard