org.jikesrvm.compilers.opt.ir.ia32
Class MachineSpecificIRIA

java.lang.Object
  extended by org.jikesrvm.compilers.opt.ir.MachineSpecificIR
      extended by org.jikesrvm.compilers.opt.ir.ia32.MachineSpecificIRIA
Direct Known Subclasses:
MachineSpecificIRIA.EM64T, MachineSpecificIRIA.IA32

public abstract class MachineSpecificIRIA
extends MachineSpecificIR

Wrappers around IA32-specific IR common to both 32 & 64 bit


Nested Class Summary
static class MachineSpecificIRIA.EM64T
          Wrappers around EMT64-specific IR (64-bit specific)
static class MachineSpecificIRIA.IA32
          Wrappers around IA32-specific IR (32-bit specific)
 
Constructor Summary
MachineSpecificIRIA()
           
 
Method Summary
 int getBURSManagedFPRValue(Operand operand)
           
 boolean isAdviseESP(Operator operator)
           
 boolean isBURSManagedFPROperand(Operand operand)
           
 boolean isConditionOperand(Operand operand)
           
 boolean isFClear(Operator operator)
           
 boolean isFNInit(Operator operator)
           
 boolean isHandledByRegisterUnknown(char opcode)
           
 boolean mutateFMOVs(LiveIntervalElement live, Register register, int dfnbegin, int dfnend)
          Mutate FMOVs that end live ranges
 void mutateMIRCondBranch(Instruction cb)
           
 void rewriteFPStack(IR ir)
          Rewrite floating point registers to reflect changes in stack height induced by BURS.
 
Methods inherited from class org.jikesrvm.compilers.opt.ir.MachineSpecificIR
canFoldNullCheckAndLoad, isPowerPCTrapOperand, mayEscapeMethod, mayEscapeThread
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MachineSpecificIRIA

public MachineSpecificIRIA()
Method Detail

isConditionOperand

public boolean isConditionOperand(Operand operand)
Specified by:
isConditionOperand in class MachineSpecificIR

mutateMIRCondBranch

public void mutateMIRCondBranch(Instruction cb)
Specified by:
mutateMIRCondBranch in class MachineSpecificIR

isHandledByRegisterUnknown

public boolean isHandledByRegisterUnknown(char opcode)
Specified by:
isHandledByRegisterUnknown in class MachineSpecificIR

isAdviseESP

public boolean isAdviseESP(Operator operator)
Overrides:
isAdviseESP in class MachineSpecificIR

isFClear

public boolean isFClear(Operator operator)
Overrides:
isFClear in class MachineSpecificIR

isFNInit

public boolean isFNInit(Operator operator)
Overrides:
isFNInit in class MachineSpecificIR

isBURSManagedFPROperand

public boolean isBURSManagedFPROperand(Operand operand)
Overrides:
isBURSManagedFPROperand in class MachineSpecificIR

getBURSManagedFPRValue

public int getBURSManagedFPRValue(Operand operand)
Overrides:
getBURSManagedFPRValue in class MachineSpecificIR

mutateFMOVs

public boolean mutateFMOVs(LiveIntervalElement live,
                           Register register,
                           int dfnbegin,
                           int dfnend)
Mutate FMOVs that end live ranges

Overrides:
mutateFMOVs in class MachineSpecificIR
Parameters:
live - The live interval for a basic block/reg pair
register - The register for this live interval
dfnbegin - The (adjusted) begin for this interval
dfnend - The (adjusted) end for this interval

rewriteFPStack

public void rewriteFPStack(IR ir)
Rewrite floating point registers to reflect changes in stack height induced by BURS. Side effect: update the fpStackHeight in MIRInfo

Overrides:
rewriteFPStack in class MachineSpecificIR