Mercurial > hg > graal-jvmci-8
changeset 21967:f0e4a8342803
LinearScanLifetimeAnalysisPhase: make registerPriorityOfOutputOperand a member and move SSA specific stuff to SSALinearScanLifetimeAnalysisPhase.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 08 Jun 2015 15:19:36 +0200 |
parents | 4005025656ee |
children | 3c93acd57197 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanLifetimeAnalysisPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanLifetimeAnalysisPhase.java |
diffstat | 2 files changed, 17 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanLifetimeAnalysisPhase.java Mon Jun 08 15:03:25 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanLifetimeAnalysisPhase.java Mon Jun 08 15:19:36 2015 +0200 @@ -22,19 +22,10 @@ */ package com.oracle.graal.lir.alloc.lsra; -import com.oracle.jvmci.code.StackSlot; -import com.oracle.jvmci.code.TargetDescription; -import com.oracle.jvmci.code.Register; -import com.oracle.jvmci.code.BailoutException; -import com.oracle.jvmci.meta.JavaConstant; -import com.oracle.jvmci.meta.Kind; -import com.oracle.jvmci.meta.Value; -import com.oracle.jvmci.meta.LIRKind; -import com.oracle.jvmci.meta.AllocatableValue; -import static com.oracle.jvmci.code.ValueUtil.*; import static com.oracle.graal.compiler.common.GraalOptions.*; import static com.oracle.graal.lir.LIRValueUtil.*; import static com.oracle.graal.lir.debug.LIRGenerationDebugContext.*; +import static com.oracle.jvmci.code.ValueUtil.*; import java.util.*; @@ -44,7 +35,6 @@ import com.oracle.graal.lir.*; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; -import com.oracle.graal.lir.StandardOp.LabelOp; import com.oracle.graal.lir.StandardOp.MoveOp; import com.oracle.graal.lir.StandardOp.StackStoreOp; import com.oracle.graal.lir.alloc.lsra.Interval.RegisterPriority; @@ -53,9 +43,11 @@ import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.gen.LIRGeneratorTool.SpillMoveFactory; import com.oracle.graal.lir.phases.*; +import com.oracle.jvmci.code.*; import com.oracle.jvmci.common.*; import com.oracle.jvmci.debug.*; import com.oracle.jvmci.debug.Debug.Scope; +import com.oracle.jvmci.meta.*; class LinearScanLifetimeAnalysisPhase extends AllocationPhase { @@ -640,17 +632,12 @@ /** * Determines the register priority for an instruction's output/result operand. */ - private static RegisterPriority registerPriorityOfOutputOperand(LIRInstruction op) { + protected RegisterPriority registerPriorityOfOutputOperand(LIRInstruction op) { if (op instanceof MoveOp) { MoveOp move = (MoveOp) op; if (optimizeMethodArgument(move.getInput())) { return RegisterPriority.None; } - } else if (op instanceof LabelOp) { - LabelOp label = (LabelOp) op; - if (label.isPhiIn()) { - return RegisterPriority.None; - } } else if (op instanceof StackStoreOp) { return RegisterPriority.ShouldHaveRegister; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanLifetimeAnalysisPhase.java Mon Jun 08 15:03:25 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanLifetimeAnalysisPhase.java Mon Jun 08 15:19:36 2015 +0200 @@ -22,16 +22,16 @@ */ package com.oracle.graal.lir.alloc.lsra; -import com.oracle.jvmci.meta.Value; -import com.oracle.jvmci.meta.AllocatableValue; import java.util.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.StandardOp.LabelOp; +import com.oracle.graal.lir.alloc.lsra.Interval.RegisterPriority; import com.oracle.graal.lir.ssa.*; import com.oracle.jvmci.debug.*; +import com.oracle.jvmci.meta.*; public class SSALinearScanLifetimeAnalysisPhase extends LinearScanLifetimeAnalysisPhase { @@ -72,4 +72,15 @@ } } } + + @Override + protected RegisterPriority registerPriorityOfOutputOperand(LIRInstruction op) { + if (op instanceof LabelOp) { + LabelOp label = (LabelOp) op; + if (label.isPhiIn()) { + return RegisterPriority.None; + } + } + return super.registerPriorityOfOutputOperand(op); + } }