org.jikesrvm.compilers.opt.ir
Class InlineGuard

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

public final class InlineGuard
extends InstructionFormat

The InlineGuard 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
InlineGuard()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for InlineGuard.
static boolean conforms(Operator o)
          InstructionFormat identification method for InlineGuard.
static Instruction create(Operator o, Operand Value, Operand Guard, Operand Goal, BranchOperand Target, BranchProfileOperand BranchProfile)
          Create an instruction of the InlineGuard instruction format.
static BranchProfileOperand getBranchProfile(Instruction i)
          Get the operand called BranchProfile from the argument instruction.
static BranchProfileOperand getClearBranchProfile(Instruction i)
          Get the operand called BranchProfile from the argument instruction clearing its instruction pointer.
static Operand getClearGoal(Instruction i)
          Get the operand called Goal from the argument instruction clearing its instruction pointer.
static Operand getClearGuard(Instruction i)
          Get the operand called Guard from the argument instruction clearing its instruction pointer.
static BranchOperand getClearTarget(Instruction i)
          Get the operand called Target 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 Operand getGoal(Instruction i)
          Get the operand called Goal from the argument instruction.
static Operand getGuard(Instruction i)
          Get the operand called Guard from the argument instruction.
static BranchOperand getTarget(Instruction i)
          Get the operand called Target from the argument instruction.
static Operand getValue(Instruction i)
          Get the operand called Value from the argument instruction.
static boolean hasBranchProfile(Instruction i)
          Does the argument instruction have a non-null operand named BranchProfile?
static boolean hasGoal(Instruction i)
          Does the argument instruction have a non-null operand named Goal?
static boolean hasGuard(Instruction i)
          Does the argument instruction have a non-null operand named Guard?
static boolean hasTarget(Instruction i)
          Does the argument instruction have a non-null operand named Target?
static boolean hasValue(Instruction i)
          Does the argument instruction have a non-null operand named Value?
static int indexOfBranchProfile(Instruction i)
          Return the index of the operand called BranchProfile in the argument instruction.
static int indexOfGoal(Instruction i)
          Return the index of the operand called Goal in the argument instruction.
static int indexOfGuard(Instruction i)
          Return the index of the operand called Guard in the argument instruction.
static int indexOfTarget(Instruction i)
          Return the index of the operand called Target 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 Guard, Operand Goal, BranchOperand Target, BranchProfileOperand BranchProfile)
          Mutate the argument instruction into an instruction of the InlineGuard instruction format having the specified operator and operands.
static void setBranchProfile(Instruction i, BranchProfileOperand BranchProfile)
          Set the operand called BranchProfile in the argument instruction to the argument operand.
static void setGoal(Instruction i, Operand Goal)
          Set the operand called Goal in the argument instruction to the argument operand.
static void setGuard(Instruction i, Operand Guard)
          Set the operand called Guard in the argument instruction to the argument operand.
static void setTarget(Instruction i, BranchOperand Target)
          Set the operand called Target 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

InlineGuard

public InlineGuard()
Method Detail

conforms

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

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

conforms

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

Parameters:
o - an instruction
Returns:
true if the InstructionFormat of the argument operator is InlineGuard 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.

getGuard

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

getClearGuard

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

setGuard

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

indexOfGuard

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

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

hasGuard

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

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

getGoal

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

getClearGoal

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

setGoal

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

indexOfGoal

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

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

hasGoal

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

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

getTarget

public static BranchOperand getTarget(Instruction i)
Get the 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
Returns:
the operand called Target

getClearTarget

public static BranchOperand getClearTarget(Instruction i)
Get the 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
Returns:
the operand called Target

setTarget

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

indexOfTarget

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

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

hasTarget

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

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

getBranchProfile

public static BranchProfileOperand getBranchProfile(Instruction i)
Get the 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
Returns:
the operand called BranchProfile

getClearBranchProfile

public static BranchProfileOperand getClearBranchProfile(Instruction i)
Get the 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
Returns:
the operand called BranchProfile

setBranchProfile

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

indexOfBranchProfile

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

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

hasBranchProfile

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

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

create

public static Instruction create(Operator o,
                                 Operand Value,
                                 Operand Guard,
                                 Operand Goal,
                                 BranchOperand Target,
                                 BranchProfileOperand BranchProfile)
Create an instruction of the InlineGuard instruction format.

Parameters:
o - the instruction's operator
Value - the instruction's Value operand
Guard - the instruction's Guard operand
Goal - the instruction's Goal operand
Target - the instruction's Target operand
BranchProfile - the instruction's BranchProfile operand
Returns:
the newly created InlineGuard instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 Operand Value,
                                 Operand Guard,
                                 Operand Goal,
                                 BranchOperand Target,
                                 BranchProfileOperand BranchProfile)
Mutate the argument instruction into an instruction of the InlineGuard 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
Guard - the instruction's Guard operand
Goal - the instruction's Goal operand
Target - the instruction's Target operand
BranchProfile - the instruction's BranchProfile operand
Returns:
the mutated instruction