org.jikesrvm.compilers.opt.ir
Class OsrBarrier

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

public final class OsrBarrier
extends InstructionFormat

The OsrBarrier 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
OsrBarrier()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for OsrBarrier.
static boolean conforms(Operator o)
          InstructionFormat identification method for OsrBarrier.
static Instruction create(Operator o, OsrTypeInfoOperand TypeInfo, int numVarOps)
          Create an instruction of the OsrBarrier 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 OsrTypeInfoOperand getClearTypeInfo(Instruction i)
          Get the operand called TypeInfo 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 int getNumberOfElements(Instruction i)
          How many variable-length operands called Elements does the argument instruction have?
static OsrTypeInfoOperand getTypeInfo(Instruction i)
          Get the operand called TypeInfo from the argument instruction.
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 hasTypeInfo(Instruction i)
          Does the argument instruction have a non-null operand named TypeInfo?
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 indexOfTypeInfo(Instruction i)
          Return the index of the operand called TypeInfo in the argument instruction.
static Instruction mutate(Instruction i, Operator o, OsrTypeInfoOperand TypeInfo, int numVarOps)
          Mutate the argument instruction into an instruction of the OsrBarrier 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 setTypeInfo(Instruction i, OsrTypeInfoOperand TypeInfo)
          Set the operand called TypeInfo 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

OsrBarrier

public OsrBarrier()
Method Detail

conforms

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

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

conforms

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

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

getTypeInfo

public static OsrTypeInfoOperand getTypeInfo(Instruction i)
Get the operand called TypeInfo 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 TypeInfo

getClearTypeInfo

public static OsrTypeInfoOperand getClearTypeInfo(Instruction i)
Get the operand called TypeInfo 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 TypeInfo

setTypeInfo

public static void setTypeInfo(Instruction i,
                               OsrTypeInfoOperand TypeInfo)
Set the operand called TypeInfo 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
TypeInfo - the operand to store

indexOfTypeInfo

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

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

hasTypeInfo

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

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named TypeInfo 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,
                                 OsrTypeInfoOperand TypeInfo,
                                 int numVarOps)
Create an instruction of the OsrBarrier instruction format.

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

mutate

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

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