org.jikesrvm.compilers.opt.ir
Class MIR_LowTableSwitch

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

public final class MIR_LowTableSwitch
extends InstructionFormat

The MIR_LowTableSwitch 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
MIR_LowTableSwitch()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for MIR_LowTableSwitch.
static boolean conforms(Operator o)
          InstructionFormat identification method for MIR_LowTableSwitch.
static Instruction create(Operator o, RegisterOperand Index, RegisterOperand MethodStart, int numVarOps)
          Create an instruction of the MIR_LowTableSwitch instruction format.
static BranchProfileOperand getBranchProfile(Instruction i, int k)
          Get the k'th operand called BranchProfile from the argument instruction.
static BranchProfileOperand getClearBranchProfile(Instruction i, int k)
          Get the k'th operand called BranchProfile from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearIndex(Instruction i)
          Get the operand called Index from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearMethodStart(Instruction i)
          Get the operand called MethodStart from the argument instruction clearing its instruction pointer.
static BranchOperand getClearTarget(Instruction i, int k)
          Get the k'th operand called Target from the argument instruction clearing its instruction pointer.
static RegisterOperand getIndex(Instruction i)
          Get the operand called Index from the argument instruction.
static RegisterOperand getMethodStart(Instruction i)
          Get the operand called MethodStart from the argument instruction.
static int getNumberOfBranchProfiles(Instruction i)
          How many variable-length operands called BranchProfiles does the argument instruction have?
static int getNumberOfTargets(Instruction i)
          How many variable-length operands called Targets does the argument instruction have?
static BranchOperand getTarget(Instruction i, int k)
          Get the k'th operand called Target from the argument instruction.
static boolean hasBranchProfile(Instruction i, int k)
          Does the argument instruction have a non-null k'th operand named BranchProfile?
static boolean hasBranchProfiles(Instruction i)
          Does the argument instruction have any operands named BranchProfile?
static boolean hasIndex(Instruction i)
          Does the argument instruction have a non-null operand named Index?
static boolean hasMethodStart(Instruction i)
          Does the argument instruction have a non-null operand named MethodStart?
static boolean hasTarget(Instruction i, int k)
          Does the argument instruction have a non-null k'th operand named Target?
static boolean hasTargets(Instruction i)
          Does the argument instruction have any operands named Target?
static int indexOfBranchProfile(Instruction i, int k)
          Return the index of the k'th operand called BranchProfile in the argument instruction.
static int indexOfBranchProfiles(Instruction i)
          Return the index of the first operand called BranchProfile in the argument instruction.
static int indexOfIndex(Instruction i)
          Return the index of the operand called Index in the argument instruction.
static int indexOfMethodStart(Instruction i)
          Return the index of the operand called MethodStart in the argument instruction.
static int indexOfTarget(Instruction i, int k)
          Return the index of the k'th operand called Target in the argument instruction.
static int indexOfTargets(Instruction i)
          Return the index of the first operand called Target in the argument instruction.
static Instruction mutate(Instruction i, Operator o, RegisterOperand Index, RegisterOperand MethodStart, int numVarOps)
          Mutate the argument instruction into an instruction of the MIR_LowTableSwitch instruction format having the specified operator and operands.
static void resizeNumberOfBranchProfiles(Instruction i, int numVarOps)
          Change the number of BranchProfiles that may be stored in the argument instruction to numVarOps.
static void resizeNumberOfTargets(Instruction i, int numVarOps)
          Change the number of Targets that may be stored in the argument instruction to numVarOps.
static void setBranchProfile(Instruction i, int k, BranchProfileOperand o)
          Set the k'th operand called BranchProfile in the argument instruction to the argument operand.
static void setIndex(Instruction i, RegisterOperand Index)
          Set the operand called Index in the argument instruction to the argument operand.
static void setMethodStart(Instruction i, RegisterOperand MethodStart)
          Set the operand called MethodStart in the argument instruction to the argument operand.
static void setTarget(Instruction i, int k, BranchOperand o)
          Set the k'th operand called Target 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

MIR_LowTableSwitch

public MIR_LowTableSwitch()
Method Detail

conforms

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

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

conforms

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

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

getIndex

public static RegisterOperand getIndex(Instruction i)
Get the operand called Index 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 Index

getClearIndex

public static RegisterOperand getClearIndex(Instruction i)
Get the operand called Index 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 Index

setIndex

public static void setIndex(Instruction i,
                            RegisterOperand Index)
Set the operand called Index 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
Index - the operand to store

indexOfIndex

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

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

hasIndex

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

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

getMethodStart

public static RegisterOperand getMethodStart(Instruction i)
Get the operand called MethodStart 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 MethodStart

getClearMethodStart

public static RegisterOperand getClearMethodStart(Instruction i)
Get the operand called MethodStart 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 MethodStart

setMethodStart

public static void setMethodStart(Instruction i,
                                  RegisterOperand MethodStart)
Set the operand called MethodStart 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
MethodStart - the operand to store

indexOfMethodStart

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

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

hasMethodStart

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

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

getTarget

public static BranchOperand getTarget(Instruction i,
                                      int k)
Get the k'th operand called Target 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 Target

getClearTarget

public static BranchOperand getClearTarget(Instruction i,
                                           int k)
Get the k'th operand called Target 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 Target

setTarget

public static void setTarget(Instruction i,
                             int k,
                             BranchOperand o)
Set the k'th operand called Target 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

indexOfTarget

public static int indexOfTarget(Instruction i,
                                int k)
Return the index of the k'th operand called Target 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 Target in the argument instruction

hasTarget

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

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 Target or false if it does not.

indexOfTargets

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

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

hasTargets

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

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

getNumberOfTargets

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

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

resizeNumberOfTargets

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

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

getBranchProfile

public static BranchProfileOperand getBranchProfile(Instruction i,
                                                    int k)
Get the k'th operand called BranchProfile 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 BranchProfile

getClearBranchProfile

public static BranchProfileOperand getClearBranchProfile(Instruction i,
                                                         int k)
Get the k'th operand called BranchProfile 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 BranchProfile

setBranchProfile

public static void setBranchProfile(Instruction i,
                                    int k,
                                    BranchProfileOperand o)
Set the k'th operand called BranchProfile 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

indexOfBranchProfile

public static int indexOfBranchProfile(Instruction i,
                                       int k)
Return the index of the k'th operand called BranchProfile 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 BranchProfile in the argument instruction

hasBranchProfile

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

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 BranchProfile or false if it does not.

indexOfBranchProfiles

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

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

hasBranchProfiles

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

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

getNumberOfBranchProfiles

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

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

resizeNumberOfBranchProfiles

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

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

create

public static Instruction create(Operator o,
                                 RegisterOperand Index,
                                 RegisterOperand MethodStart,
                                 int numVarOps)
Create an instruction of the MIR_LowTableSwitch instruction format.

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

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 RegisterOperand Index,
                                 RegisterOperand MethodStart,
                                 int numVarOps)
Mutate the argument instruction into an instruction of the MIR_LowTableSwitch instruction format having the specified operator and operands.

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