org.jikesrvm.compilers.opt.ir
Class Prologue

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

public final class Prologue
extends InstructionFormat

The Prologue 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
Prologue()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for Prologue.
static boolean conforms(Operator o)
          InstructionFormat identification method for Prologue.
static Instruction create(Operator o, int numVarOps)
          Create an instruction of the Prologue instruction format.
static RegisterOperand getClearFormal(Instruction i, int k)
          Get the k'th operand called Formal from the argument instruction clearing its instruction pointer.
static RegisterOperand getFormal(Instruction i, int k)
          Get the k'th operand called Formal from the argument instruction.
static int getNumberOfFormals(Instruction i)
          How many variable-length operands called Formals does the argument instruction have?
static boolean hasFormal(Instruction i, int k)
          Does the argument instruction have a non-null k'th operand named Formal?
static boolean hasFormals(Instruction i)
          Does the argument instruction have any operands named Formal?
static int indexOfFormal(Instruction i, int k)
          Return the index of the k'th operand called Formal in the argument instruction.
static int indexOfFormals(Instruction i)
          Return the index of the first operand called Formal in the argument instruction.
static Instruction mutate(Instruction i, Operator o, int numVarOps)
          Mutate the argument instruction into an instruction of the Prologue instruction format having the specified operator and operands.
static void resizeNumberOfFormals(Instruction i, int numVarOps)
          Change the number of Formals that may be stored in the argument instruction to numVarOps.
static void setFormal(Instruction i, int k, RegisterOperand o)
          Set the k'th operand called Formal 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

Prologue

public Prologue()
Method Detail

conforms

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

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

conforms

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

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

getFormal

public static RegisterOperand getFormal(Instruction i,
                                        int k)
Get the k'th operand called Formal 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 Formal

getClearFormal

public static RegisterOperand getClearFormal(Instruction i,
                                             int k)
Get the k'th operand called Formal 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 Formal

setFormal

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

indexOfFormal

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

hasFormal

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

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

indexOfFormals

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

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

hasFormals

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

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

getNumberOfFormals

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

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

resizeNumberOfFormals

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

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

create

public static Instruction create(Operator o,
                                 int numVarOps)
Create an instruction of the Prologue instruction format.

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

mutate

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

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