org.jikesrvm.compilers.opt.ir
Class OsrPoint

java.lang.Object
  extended by org.jikesrvm.compilers.opt.ir.InstructionFormat
      extended by org.jikesrvm.compilers.opt.ir.OsrPoint

public final class OsrPoint
extends InstructionFormat

The OsrPoint InstructionFormat class. The header comment for Instruction contains an explanation of the role of InstructionFormats in the opt compiler's IR.


Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.ir.InstructionFormat
ALoad_format, ALoad_traits, ARCH_INDEPENDENT_INSTR_FORMAT_END_format, AStore_format, AStore_traits, Athrow_format, Athrow_traits, Attempt_format, Attempt_traits, BBend_format, BBend_traits, Binary_format, Binary_traits, BooleanCmp_format, BooleanCmp_traits, BoundsCheck_format, BoundsCheck_traits, CacheOp_format, CacheOp_traits, Call_format, Call_traits, CondMove_format, CondMove_traits, Empty_format, Empty_traits, GetField_format, GetField_traits, GetStatic_format, GetStatic_traits, Goto_format, Goto_traits, GuardedBinary_format, GuardedBinary_traits, GuardedSet_format, GuardedSet_traits, GuardedUnary_format, GuardedUnary_traits, IfCmp_format, IfCmp_traits, IfCmp2_format, IfCmp2_traits, InlineGuard_format, InlineGuard_traits, InstanceOf_format, InstanceOf_traits, InstrumentedCounter_format, InstrumentedCounter_traits, Label_format, Label_traits, Load_format, Load_traits, LookupSwitch_format, LookupSwitch_traits, LowTableSwitch_format, LowTableSwitch_traits, MIN_OPERAND_ARRAY_LENGTH, MIR_BinaryAcc_format, MIR_BinaryAcc_traits, MIR_Branch_format, MIR_Branch_traits, MIR_CacheOp_format, MIR_CacheOp_traits, MIR_Call_format, MIR_Call_traits, MIR_CaseLabel_format, MIR_CaseLabel_traits, MIR_Compare_format, MIR_Compare_traits, MIR_CompareExchange_format, MIR_CompareExchange_traits, MIR_CompareExchange8B_format, MIR_CompareExchange8B_traits, MIR_CondBranch_format, MIR_CondBranch_traits, MIR_CondBranch2_format, MIR_CondBranch2_traits, MIR_CondMove_format, MIR_CondMove_traits, MIR_ConvertDW2QW_format, MIR_ConvertDW2QW_traits, MIR_Divide_format, MIR_Divide_traits, MIR_DoubleShift_format, MIR_DoubleShift_traits, MIR_Empty_format, MIR_Empty_traits, MIR_FSave_format, MIR_FSave_traits, MIR_Lea_format, MIR_Lea_traits, MIR_LowTableSwitch_format, MIR_LowTableSwitch_traits, MIR_Move_format, MIR_Move_traits, MIR_Multiply_format, MIR_Multiply_traits, MIR_Nullary_format, MIR_Nullary_traits, MIR_RDTSC_format, MIR_RDTSC_traits, MIR_Return_format, MIR_Return_traits, MIR_Set_format, MIR_Set_traits, MIR_Test_format, MIR_Test_traits, MIR_Trap_format, MIR_Trap_traits, MIR_TrapIf_format, MIR_TrapIf_traits, MIR_Unary_format, MIR_Unary_traits, MIR_UnaryAcc_format, MIR_UnaryAcc_traits, MIR_UnaryNoRes_format, MIR_UnaryNoRes_traits, MIR_XChng_format, MIR_XChng_traits, MonitorOp_format, MonitorOp_traits, Move_format, Move_traits, Multianewarray_format, Multianewarray_traits, New_format, New_traits, NewArray_format, NewArray_traits, Nullary_format, Nullary_traits, NullCheck_format, NullCheck_traits, OsrBarrier_format, OsrBarrier_traits, OsrPoint_format, OsrPoint_traits, Phi_format, Phi_traits, Prepare_format, Prepare_traits, Prologue_format, Prologue_traits, PutField_format, PutField_traits, PutStatic_format, PutStatic_traits, Return_format, Return_traits, Store_format, Store_traits, StoreCheck_format, StoreCheck_traits, TableSwitch_format, TableSwitch_traits, Trap_format, Trap_traits, TrapIf_format, TrapIf_traits, TypeCheck_format, TypeCheck_traits, Unary_format, Unary_traits, Unassigned_format, ZeroCheck_format, ZeroCheck_traits
 
Constructor Summary
OsrPoint()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for OsrPoint.
static boolean conforms(Operator o)
          InstructionFormat identification method for OsrPoint.
static Instruction create(Operator o, InlinedOsrTypeInfoOperand InlinedTypeInfo, int numVarOps)
          Create an instruction of the OsrPoint instruction format.
static Operand getClearElement(Instruction i, int k)
          Get the k'th operand called Element from the argument instruction clearing its instruction pointer.
static InlinedOsrTypeInfoOperand getClearInlinedTypeInfo(Instruction i)
          Get the operand called InlinedTypeInfo from the argument instruction clearing its instruction pointer.
static Operand getElement(Instruction i, int k)
          Get the k'th operand called Element from the argument instruction.
static InlinedOsrTypeInfoOperand getInlinedTypeInfo(Instruction i)
          Get the operand called InlinedTypeInfo from the argument instruction.
static int getNumberOfElements(Instruction i)
          How many variable-length operands called Elements does the argument instruction have?
static boolean hasElement(Instruction i, int k)
          Does the argument instruction have a non-null k'th operand named Element?
static boolean hasElements(Instruction i)
          Does the argument instruction have any operands named Element?
static boolean hasInlinedTypeInfo(Instruction i)
          Does the argument instruction have a non-null operand named InlinedTypeInfo?
static int indexOfElement(Instruction i, int k)
          Return the index of the k'th operand called Element in the argument instruction.
static int indexOfElements(Instruction i)
          Return the index of the first operand called Element in the argument instruction.
static int indexOfInlinedTypeInfo(Instruction i)
          Return the index of the operand called InlinedTypeInfo in the argument instruction.
static Instruction mutate(Instruction i, Operator o, InlinedOsrTypeInfoOperand InlinedTypeInfo, int numVarOps)
          Mutate the argument instruction into an instruction of the OsrPoint instruction format having the specified operator and operands.
static void resizeNumberOfElements(Instruction i, int numVarOps)
          Change the number of Elements that may be stored in the argument instruction to numVarOps.
static void setElement(Instruction i, int k, Operand o)
          Set the k'th operand called Element in the argument instruction to the argument operand.
static void setInlinedTypeInfo(Instruction i, InlinedOsrTypeInfoOperand InlinedTypeInfo)
          Set the operand called InlinedTypeInfo in the argument instruction to the argument operand.
 
Methods inherited from class org.jikesrvm.compilers.opt.ir.InstructionFormat
fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OsrPoint

public OsrPoint()
Method Detail

conforms

public static boolean conforms(Instruction i)
InstructionFormat identification method for OsrPoint.

Parameters:
i - an instruction
Returns:
true if the InstructionFormat of the argument instruction is OsrPoint or false if it is not.

conforms

public static boolean conforms(Operator o)
InstructionFormat identification method for OsrPoint.

Parameters:
o - an instruction
Returns:
true if the InstructionFormat of the argument operator is OsrPoint or false if it is not.

getInlinedTypeInfo

public static InlinedOsrTypeInfoOperand getInlinedTypeInfo(Instruction i)
Get the operand called InlinedTypeInfo from the argument instruction. Note that the returned operand will still point to its containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called InlinedTypeInfo

getClearInlinedTypeInfo

public static InlinedOsrTypeInfoOperand getClearInlinedTypeInfo(Instruction i)
Get the operand called InlinedTypeInfo from the argument instruction clearing its instruction pointer. The returned operand will not point to any containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called InlinedTypeInfo

setInlinedTypeInfo

public static void setInlinedTypeInfo(Instruction i,
                                      InlinedOsrTypeInfoOperand InlinedTypeInfo)
Set the operand called InlinedTypeInfo in the argument instruction to the argument operand. The operand will now point to the argument instruction as its containing instruction.

Parameters:
i - the instruction in which to store the operand
InlinedTypeInfo - the operand to store

indexOfInlinedTypeInfo

public static int indexOfInlinedTypeInfo(Instruction i)
Return the index of the operand called InlinedTypeInfo in the argument instruction.

Parameters:
i - the instruction to access.
Returns:
the index of the operand called InlinedTypeInfo in the argument instruction

hasInlinedTypeInfo

public static boolean hasInlinedTypeInfo(Instruction i)
Does the argument instruction have a non-null operand named InlinedTypeInfo?

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named InlinedTypeInfo or false if it does not.

getElement

public static Operand getElement(Instruction i,
                                 int k)
Get the k'th operand called Element from the argument instruction. Note that the returned operand will still point to its containing instruction.

Parameters:
i - the instruction to fetch the operand from
k - the index of the operand
Returns:
the k'th operand called Element

getClearElement

public static Operand getClearElement(Instruction i,
                                      int k)
Get the k'th operand called Element from the argument instruction clearing its instruction pointer. The returned operand will not point to any containing instruction.

Parameters:
i - the instruction to fetch the operand from
k - the index of the operand
Returns:
the k'th operand called Element

setElement

public static void setElement(Instruction i,
                              int k,
                              Operand o)
Set the k'th operand called Element in the argument instruction to the argument operand. The operand will now point to the argument instruction as its containing instruction.

Parameters:
i - the instruction in which to store the operand
k - the index of the operand
o - the operand to store

indexOfElement

public static int indexOfElement(Instruction i,
                                 int k)
Return the index of the k'th operand called Element in the argument instruction.

Parameters:
i - the instruction to access.
k - the index of the operand.
Returns:
the index of the k'th operand called Element in the argument instruction

hasElement

public static boolean hasElement(Instruction i,
                                 int k)
Does the argument instruction have a non-null k'th operand named Element?

Parameters:
i - the instruction to access.
k - the index of the operand.
Returns:
true if the instruction has an non-null k'th operand named Element or false if it does not.

indexOfElements

public static int indexOfElements(Instruction i)
Return the index of the first operand called Element in the argument instruction.

Parameters:
i - the instruction to access.
Returns:
the index of the first operand called Element in the argument instruction

hasElements

public static boolean hasElements(Instruction i)
Does the argument instruction have any operands named Element?

Parameters:
i - the instruction to access.
Returns:
true if the instruction has operands named Element or false if it does not.

getNumberOfElements

public static int getNumberOfElements(Instruction i)
How many variable-length operands called Elements does the argument instruction have?

Parameters:
i - the instruction to access
Returns:
the number of operands called Elements the instruction has

resizeNumberOfElements

public static void resizeNumberOfElements(Instruction i,
                                          int numVarOps)
Change the number of Elements that may be stored in the argument instruction to numVarOps.

Parameters:
i - the instruction to access
numVarOps - the new number of variable operands called Elements that may be stored in the instruction

create

public static Instruction create(Operator o,
                                 InlinedOsrTypeInfoOperand InlinedTypeInfo,
                                 int numVarOps)
Create an instruction of the OsrPoint instruction format.

Parameters:
o - the instruction's operator
InlinedTypeInfo - the instruction's InlinedTypeInfo operand
numVarOps - the number of variable length operands that will be stored in the insruction.
Returns:
the newly created OsrPoint instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 InlinedOsrTypeInfoOperand InlinedTypeInfo,
                                 int numVarOps)
Mutate the argument instruction into an instruction of the OsrPoint instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
InlinedTypeInfo - the instruction's InlinedTypeInfo operand
numVarOps - the number of variable length operands that will be stored in the insruction.
Returns:
the mutated instruction