org.jikesrvm.compilers.opt.ir
Class TableSwitch

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

public final class TableSwitch
extends InstructionFormat

The TableSwitch 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
TableSwitch()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for TableSwitch.
static boolean conforms(Operator o)
          InstructionFormat identification method for TableSwitch.
static Instruction create(Operator o, Operand Value, Operand Unknown1, Operand Unknown2, IntConstantOperand Low, IntConstantOperand High, BranchOperand Default, BranchProfileOperand DefaultBranchProfile, int numVarOps)
          Create an instruction of the TableSwitch 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 BranchOperand getClearDefault(Instruction i)
          Get the operand called Default from the argument instruction clearing its instruction pointer.
static BranchProfileOperand getClearDefaultBranchProfile(Instruction i)
          Get the operand called DefaultBranchProfile from the argument instruction clearing its instruction pointer.
static IntConstantOperand getClearHigh(Instruction i)
          Get the operand called High from the argument instruction clearing its instruction pointer.
static IntConstantOperand getClearLow(Instruction i)
          Get the operand called Low 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 Operand getClearUnknown1(Instruction i)
          Get the operand called Unknown1 from the argument instruction clearing its instruction pointer.
static Operand getClearUnknown2(Instruction i)
          Get the operand called Unknown2 from the argument instruction clearing its instruction pointer.
static Operand getClearValue(Instruction i)
          Get the operand called Value from the argument instruction clearing its instruction pointer.
static BranchOperand getDefault(Instruction i)
          Get the operand called Default from the argument instruction.
static BranchProfileOperand getDefaultBranchProfile(Instruction i)
          Get the operand called DefaultBranchProfile from the argument instruction.
static IntConstantOperand getHigh(Instruction i)
          Get the operand called High from the argument instruction.
static IntConstantOperand getLow(Instruction i)
          Get the operand called Low 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 Operand getUnknown1(Instruction i)
          Get the operand called Unknown1 from the argument instruction.
static Operand getUnknown2(Instruction i)
          Get the operand called Unknown2 from the argument instruction.
static Operand getValue(Instruction i)
          Get the operand called Value 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 hasDefault(Instruction i)
          Does the argument instruction have a non-null operand named Default?
static boolean hasDefaultBranchProfile(Instruction i)
          Does the argument instruction have a non-null operand named DefaultBranchProfile?
static boolean hasHigh(Instruction i)
          Does the argument instruction have a non-null operand named High?
static boolean hasLow(Instruction i)
          Does the argument instruction have a non-null operand named Low?
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 boolean hasUnknown1(Instruction i)
          Does the argument instruction have a non-null operand named Unknown1?
static boolean hasUnknown2(Instruction i)
          Does the argument instruction have a non-null operand named Unknown2?
static boolean hasValue(Instruction i)
          Does the argument instruction have a non-null operand named Value?
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 indexOfDefault(Instruction i)
          Return the index of the operand called Default in the argument instruction.
static int indexOfDefaultBranchProfile(Instruction i)
          Return the index of the operand called DefaultBranchProfile in the argument instruction.
static int indexOfHigh(Instruction i)
          Return the index of the operand called High in the argument instruction.
static int indexOfLow(Instruction i)
          Return the index of the operand called Low 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 int indexOfUnknown1(Instruction i)
          Return the index of the operand called Unknown1 in the argument instruction.
static int indexOfUnknown2(Instruction i)
          Return the index of the operand called Unknown2 in the argument instruction.
static int indexOfValue(Instruction i)
          Return the index of the operand called Value in the argument instruction.
static Instruction mutate(Instruction i, Operator o, Operand Value, Operand Unknown1, Operand Unknown2, IntConstantOperand Low, IntConstantOperand High, BranchOperand Default, BranchProfileOperand DefaultBranchProfile, int numVarOps)
          Mutate the argument instruction into an instruction of the TableSwitch 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 setDefault(Instruction i, BranchOperand Default)
          Set the operand called Default in the argument instruction to the argument operand.
static void setDefaultBranchProfile(Instruction i, BranchProfileOperand DefaultBranchProfile)
          Set the operand called DefaultBranchProfile in the argument instruction to the argument operand.
static void setHigh(Instruction i, IntConstantOperand High)
          Set the operand called High in the argument instruction to the argument operand.
static void setLow(Instruction i, IntConstantOperand Low)
          Set the operand called Low 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.
static void setUnknown1(Instruction i, Operand Unknown1)
          Set the operand called Unknown1 in the argument instruction to the argument operand.
static void setUnknown2(Instruction i, Operand Unknown2)
          Set the operand called Unknown2 in the argument instruction to the argument operand.
static void setValue(Instruction i, Operand Value)
          Set the operand called Value 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

TableSwitch

public TableSwitch()
Method Detail

conforms

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

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

conforms

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

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

getValue

public static Operand getValue(Instruction i)
Get the operand called Value 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 Value

getClearValue

public static Operand getClearValue(Instruction i)
Get the operand called Value 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 Value

setValue

public static void setValue(Instruction i,
                            Operand Value)
Set the operand called Value 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
Value - the operand to store

indexOfValue

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

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

hasValue

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

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

getUnknown1

public static Operand getUnknown1(Instruction i)
Get the operand called Unknown1 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 Unknown1

getClearUnknown1

public static Operand getClearUnknown1(Instruction i)
Get the operand called Unknown1 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 Unknown1

setUnknown1

public static void setUnknown1(Instruction i,
                               Operand Unknown1)
Set the operand called Unknown1 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
Unknown1 - the operand to store

indexOfUnknown1

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

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

hasUnknown1

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

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

getUnknown2

public static Operand getUnknown2(Instruction i)
Get the operand called Unknown2 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 Unknown2

getClearUnknown2

public static Operand getClearUnknown2(Instruction i)
Get the operand called Unknown2 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 Unknown2

setUnknown2

public static void setUnknown2(Instruction i,
                               Operand Unknown2)
Set the operand called Unknown2 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
Unknown2 - the operand to store

indexOfUnknown2

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

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

hasUnknown2

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

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

getLow

public static IntConstantOperand getLow(Instruction i)
Get the operand called Low 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 Low

getClearLow

public static IntConstantOperand getClearLow(Instruction i)
Get the operand called Low 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 Low

setLow

public static void setLow(Instruction i,
                          IntConstantOperand Low)
Set the operand called Low 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
Low - the operand to store

indexOfLow

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

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

hasLow

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

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

getHigh

public static IntConstantOperand getHigh(Instruction i)
Get the operand called High 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 High

getClearHigh

public static IntConstantOperand getClearHigh(Instruction i)
Get the operand called High 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 High

setHigh

public static void setHigh(Instruction i,
                           IntConstantOperand High)
Set the operand called High 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
High - the operand to store

indexOfHigh

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

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

hasHigh

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

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

getDefault

public static BranchOperand getDefault(Instruction i)
Get the operand called Default 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 Default

getClearDefault

public static BranchOperand getClearDefault(Instruction i)
Get the operand called Default 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 Default

setDefault

public static void setDefault(Instruction i,
                              BranchOperand Default)
Set the operand called Default 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
Default - the operand to store

indexOfDefault

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

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

hasDefault

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

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

getDefaultBranchProfile

public static BranchProfileOperand getDefaultBranchProfile(Instruction i)
Get the operand called DefaultBranchProfile 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 DefaultBranchProfile

getClearDefaultBranchProfile

public static BranchProfileOperand getClearDefaultBranchProfile(Instruction i)
Get the operand called DefaultBranchProfile 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 DefaultBranchProfile

setDefaultBranchProfile

public static void setDefaultBranchProfile(Instruction i,
                                           BranchProfileOperand DefaultBranchProfile)
Set the operand called DefaultBranchProfile 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
DefaultBranchProfile - the operand to store

indexOfDefaultBranchProfile

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

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

hasDefaultBranchProfile

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

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named DefaultBranchProfile 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,
                                 Operand Value,
                                 Operand Unknown1,
                                 Operand Unknown2,
                                 IntConstantOperand Low,
                                 IntConstantOperand High,
                                 BranchOperand Default,
                                 BranchProfileOperand DefaultBranchProfile,
                                 int numVarOps)
Create an instruction of the TableSwitch instruction format.

Parameters:
o - the instruction's operator
Value - the instruction's Value operand
Unknown1 - the instruction's Unknown1 operand
Unknown2 - the instruction's Unknown2 operand
Low - the instruction's Low operand
High - the instruction's High operand
Default - the instruction's Default operand
DefaultBranchProfile - the instruction's DefaultBranchProfile operand
numVarOps - the number of variable length operands that will be stored in the insruction.
Returns:
the newly created TableSwitch instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 Operand Value,
                                 Operand Unknown1,
                                 Operand Unknown2,
                                 IntConstantOperand Low,
                                 IntConstantOperand High,
                                 BranchOperand Default,
                                 BranchProfileOperand DefaultBranchProfile,
                                 int numVarOps)
Mutate the argument instruction into an instruction of the TableSwitch instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
Value - the instruction's Value operand
Unknown1 - the instruction's Unknown1 operand
Unknown2 - the instruction's Unknown2 operand
Low - the instruction's Low operand
High - the instruction's High operand
Default - the instruction's Default operand
DefaultBranchProfile - the instruction's DefaultBranchProfile operand
numVarOps - the number of variable length operands that will be stored in the insruction.
Returns:
the mutated instruction