public class FinalMIRExpansion extends IRTools
One job of this phase is to handle the expansion of the remains of
table switch. The code looks like a mess (which it is), but there
is little choice for relocatable IA32 code that does this. And the
details of this code are shared with the baseline compiler and
dependent in detail on the Assembler (see Assembler.emitOFFSET_Imm_ImmOrLabel(int, int, int)
). If you want to mess with
it, you will probably need to mess with them as well.
Constructor and Description |
---|
FinalMIRExpansion() |
Modifier and Type | Method and Description |
---|---|
static int |
expand(IR ir) |
private static void |
expandFClear(Instruction s,
IR ir)
expand an FCLEAR pseudo-insruction using FFREEs.
|
private static void |
expandFmov(Instruction s,
PhysicalRegisterSet phys)
expand an FMOV pseudo-insruction.
|
private static void |
expandUnconditionalYieldpoint(Instruction s,
IR ir,
RVMMethod meth) |
private static void |
expandYieldpoint(Instruction s,
IR ir,
RVMMethod meth,
IA32ConditionOperand ypCond) |
A, AC, AC, CPOS, CR, D, DC, defDoublesAsUse, definedIn, F, FC, getCondMoveOp, getDefaultOperand, getLoadOp, getLoadOp, getMoveOp, getStoreOp, getStoreOp, I, IC, insertInstructionsAfter, L, LC, makeBlockOnEdge, mayBeVolatileFieldLoad, moveInstruction, moveIntoRegister, moveIntoRegister, nonPEIGC, offsetOperand, TG, usedIn, useDoublesAsDef
public FinalMIRExpansion()
public static int expand(IR ir)
ir
- the IR to expandprivate static void expandFClear(Instruction s, IR ir)
s
- the instruction to expandir
- the containing IRprivate static void expandFmov(Instruction s, PhysicalRegisterSet phys)
s
- the instruction to expandphys
- controlling physical register setprivate static void expandYieldpoint(Instruction s, IR ir, RVMMethod meth, IA32ConditionOperand ypCond)
private static void expandUnconditionalYieldpoint(Instruction s, IR ir, RVMMethod meth)