org.jikesrvm.compilers.opt.ir
Class Attempt

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

public final class Attempt
extends InstructionFormat

The Attempt 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
Attempt()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for Attempt.
static boolean conforms(Operator o)
          InstructionFormat identification method for Attempt.
static Instruction create(Operator o, RegisterOperand Result, Operand Address, Operand Offset, Operand OldValue, Operand NewValue, LocationOperand Location)
          Create an instruction of the Attempt instruction format.
static Instruction create(Operator o, RegisterOperand Result, Operand Address, Operand Offset, Operand OldValue, Operand NewValue, LocationOperand Location, Operand Guard)
          Create an instruction of the Attempt instruction format.
static Operand getAddress(Instruction i)
          Get the operand called Address from the argument instruction.
static Operand getClearAddress(Instruction i)
          Get the operand called Address 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 LocationOperand getClearLocation(Instruction i)
          Get the operand called Location from the argument instruction clearing its instruction pointer.
static Operand getClearNewValue(Instruction i)
          Get the operand called NewValue from the argument instruction clearing its instruction pointer.
static Operand getClearOffset(Instruction i)
          Get the operand called Offset from the argument instruction clearing its instruction pointer.
static Operand getClearOldValue(Instruction i)
          Get the operand called OldValue from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearResult(Instruction i)
          Get the operand called Result from the argument instruction clearing its instruction pointer.
static Operand getGuard(Instruction i)
          Get the operand called Guard from the argument instruction.
static LocationOperand getLocation(Instruction i)
          Get the operand called Location from the argument instruction.
static Operand getNewValue(Instruction i)
          Get the operand called NewValue from the argument instruction.
static Operand getOffset(Instruction i)
          Get the operand called Offset from the argument instruction.
static Operand getOldValue(Instruction i)
          Get the operand called OldValue from the argument instruction.
static RegisterOperand getResult(Instruction i)
          Get the operand called Result from the argument instruction.
static boolean hasAddress(Instruction i)
          Does the argument instruction have a non-null operand named Address?
static boolean hasGuard(Instruction i)
          Does the argument instruction have a non-null operand named Guard?
static boolean hasLocation(Instruction i)
          Does the argument instruction have a non-null operand named Location?
static boolean hasNewValue(Instruction i)
          Does the argument instruction have a non-null operand named NewValue?
static boolean hasOffset(Instruction i)
          Does the argument instruction have a non-null operand named Offset?
static boolean hasOldValue(Instruction i)
          Does the argument instruction have a non-null operand named OldValue?
static boolean hasResult(Instruction i)
          Does the argument instruction have a non-null operand named Result?
static int indexOfAddress(Instruction i)
          Return the index of the operand called Address in the argument instruction.
static int indexOfGuard(Instruction i)
          Return the index of the operand called Guard in the argument instruction.
static int indexOfLocation(Instruction i)
          Return the index of the operand called Location in the argument instruction.
static int indexOfNewValue(Instruction i)
          Return the index of the operand called NewValue in the argument instruction.
static int indexOfOffset(Instruction i)
          Return the index of the operand called Offset in the argument instruction.
static int indexOfOldValue(Instruction i)
          Return the index of the operand called OldValue in the argument instruction.
static int indexOfResult(Instruction i)
          Return the index of the operand called Result in the argument instruction.
static Instruction mutate(Instruction i, Operator o, RegisterOperand Result, Operand Address, Operand Offset, Operand OldValue, Operand NewValue, LocationOperand Location)
          Mutate the argument instruction into an instruction of the Attempt instruction format having the specified operator and operands.
static Instruction mutate(Instruction i, Operator o, RegisterOperand Result, Operand Address, Operand Offset, Operand OldValue, Operand NewValue, LocationOperand Location, Operand Guard)
          Mutate the argument instruction into an instruction of the Attempt instruction format having the specified operator and operands.
static void setAddress(Instruction i, Operand Address)
          Set the operand called Address 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 setLocation(Instruction i, LocationOperand Location)
          Set the operand called Location in the argument instruction to the argument operand.
static void setNewValue(Instruction i, Operand NewValue)
          Set the operand called NewValue in the argument instruction to the argument operand.
static void setOffset(Instruction i, Operand Offset)
          Set the operand called Offset in the argument instruction to the argument operand.
static void setOldValue(Instruction i, Operand OldValue)
          Set the operand called OldValue in the argument instruction to the argument operand.
static void setResult(Instruction i, RegisterOperand Result)
          Set the operand called Result 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

Attempt

public Attempt()
Method Detail

conforms

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

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

conforms

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

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

getResult

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

getClearResult

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

setResult

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

indexOfResult

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

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

hasResult

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

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

getAddress

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

getClearAddress

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

setAddress

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

indexOfAddress

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

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

hasAddress

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

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

getOffset

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

getClearOffset

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

setOffset

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

indexOfOffset

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

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

hasOffset

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

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

getOldValue

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

getClearOldValue

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

setOldValue

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

indexOfOldValue

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

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

hasOldValue

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

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

getNewValue

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

getClearNewValue

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

setNewValue

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

indexOfNewValue

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

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

hasNewValue

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

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

getLocation

public static LocationOperand getLocation(Instruction i)
Get the operand called Location 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 Location

getClearLocation

public static LocationOperand getClearLocation(Instruction i)
Get the operand called Location 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 Location

setLocation

public static void setLocation(Instruction i,
                               LocationOperand Location)
Set the operand called Location 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
Location - the operand to store

indexOfLocation

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

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

hasLocation

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

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named Location 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 Result,
                                 Operand Address,
                                 Operand Offset,
                                 Operand OldValue,
                                 Operand NewValue,
                                 LocationOperand Location,
                                 Operand Guard)
Create an instruction of the Attempt instruction format.

Parameters:
o - the instruction's operator
Result - the instruction's Result operand
Address - the instruction's Address operand
Offset - the instruction's Offset operand
OldValue - the instruction's OldValue operand
NewValue - the instruction's NewValue operand
Location - the instruction's Location operand
Guard - the instruction's Guard operand
Returns:
the newly created Attempt instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 RegisterOperand Result,
                                 Operand Address,
                                 Operand Offset,
                                 Operand OldValue,
                                 Operand NewValue,
                                 LocationOperand Location,
                                 Operand Guard)
Mutate the argument instruction into an instruction of the Attempt instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
Result - the instruction's Result operand
Address - the instruction's Address operand
Offset - the instruction's Offset operand
OldValue - the instruction's OldValue operand
NewValue - the instruction's NewValue operand
Location - the instruction's Location operand
Guard - the instruction's Guard operand
Returns:
the mutated instruction

create

public static Instruction create(Operator o,
                                 RegisterOperand Result,
                                 Operand Address,
                                 Operand Offset,
                                 Operand OldValue,
                                 Operand NewValue,
                                 LocationOperand Location)
Create an instruction of the Attempt instruction format.

Parameters:
o - the instruction's operator
Result - the instruction's Result operand
Address - the instruction's Address operand
Offset - the instruction's Offset operand
OldValue - the instruction's OldValue operand
NewValue - the instruction's NewValue operand
Location - the instruction's Location operand
Returns:
the newly created Attempt instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 RegisterOperand Result,
                                 Operand Address,
                                 Operand Offset,
                                 Operand OldValue,
                                 Operand NewValue,
                                 LocationOperand Location)
Mutate the argument instruction into an instruction of the Attempt instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
Result - the instruction's Result operand
Address - the instruction's Address operand
Offset - the instruction's Offset operand
OldValue - the instruction's OldValue operand
NewValue - the instruction's NewValue operand
Location - the instruction's Location operand
Returns:
the mutated instruction