org.jikesrvm.compilers.opt.ir
Class BoundsCheck

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

public final class BoundsCheck
extends InstructionFormat

The BoundsCheck 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
BoundsCheck()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for BoundsCheck.
static boolean conforms(Operator o)
          InstructionFormat identification method for BoundsCheck.
static Instruction create(Operator o, RegisterOperand GuardResult, Operand Ref, Operand Index, Operand Guard)
          Create an instruction of the BoundsCheck instruction format.
static Operand getClearGuard(Instruction i)
          Get the operand called Guard from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearGuardResult(Instruction i)
          Get the operand called GuardResult from the argument instruction clearing its instruction pointer.
static Operand getClearIndex(Instruction i)
          Get the operand called Index from the argument instruction clearing its instruction pointer.
static Operand getClearRef(Instruction i)
          Get the operand called Ref from the argument instruction clearing its instruction pointer.
static Operand getGuard(Instruction i)
          Get the operand called Guard from the argument instruction.
static RegisterOperand getGuardResult(Instruction i)
          Get the operand called GuardResult from the argument instruction.
static Operand getIndex(Instruction i)
          Get the operand called Index from the argument instruction.
static Operand getRef(Instruction i)
          Get the operand called Ref from the argument instruction.
static boolean hasGuard(Instruction i)
          Does the argument instruction have a non-null operand named Guard?
static boolean hasGuardResult(Instruction i)
          Does the argument instruction have a non-null operand named GuardResult?
static boolean hasIndex(Instruction i)
          Does the argument instruction have a non-null operand named Index?
static boolean hasRef(Instruction i)
          Does the argument instruction have a non-null operand named Ref?
static int indexOfGuard(Instruction i)
          Return the index of the operand called Guard in the argument instruction.
static int indexOfGuardResult(Instruction i)
          Return the index of the operand called GuardResult in the argument instruction.
static int indexOfIndex(Instruction i)
          Return the index of the operand called Index in the argument instruction.
static int indexOfRef(Instruction i)
          Return the index of the operand called Ref in the argument instruction.
static Instruction mutate(Instruction i, Operator o, RegisterOperand GuardResult, Operand Ref, Operand Index, Operand Guard)
          Mutate the argument instruction into an instruction of the BoundsCheck instruction format having the specified operator and operands.
static void setGuard(Instruction i, Operand Guard)
          Set the operand called Guard in the argument instruction to the argument operand.
static void setGuardResult(Instruction i, RegisterOperand GuardResult)
          Set the operand called GuardResult in the argument instruction to the argument operand.
static void setIndex(Instruction i, Operand Index)
          Set the operand called Index in the argument instruction to the argument operand.
static void setRef(Instruction i, Operand Ref)
          Set the operand called Ref 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

BoundsCheck

public BoundsCheck()
Method Detail

conforms

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

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

conforms

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

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

getGuardResult

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

getClearGuardResult

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

setGuardResult

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

indexOfGuardResult

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

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

hasGuardResult

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

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

getRef

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

getClearRef

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

setRef

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

indexOfRef

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

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

hasRef

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

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

getIndex

public static Operand 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 Operand 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,
                            Operand 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.

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.

create

public static Instruction create(Operator o,
                                 RegisterOperand GuardResult,
                                 Operand Ref,
                                 Operand Index,
                                 Operand Guard)
Create an instruction of the BoundsCheck instruction format.

Parameters:
o - the instruction's operator
GuardResult - the instruction's GuardResult operand
Ref - the instruction's Ref operand
Index - the instruction's Index operand
Guard - the instruction's Guard operand
Returns:
the newly created BoundsCheck instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 RegisterOperand GuardResult,
                                 Operand Ref,
                                 Operand Index,
                                 Operand Guard)
Mutate the argument instruction into an instruction of the BoundsCheck instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
GuardResult - the instruction's GuardResult operand
Ref - the instruction's Ref operand
Index - the instruction's Index operand
Guard - the instruction's Guard operand
Returns:
the mutated instruction