changeset 23121:d736437ef3df

TraceRA: TraceLinearScanAssignLocationsPhase: rewrite stack to stack moves.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 30 Nov 2015 14:50:33 +0100
parents f449414238e4
children a720fbf1810a
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java	Mon Nov 30 14:46:11 2015 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java	Mon Nov 30 14:50:33 2015 +0100
@@ -57,6 +57,7 @@
 import com.oracle.graal.lir.StandardOp.ValueMoveOp;
 import com.oracle.graal.lir.Variable;
 import com.oracle.graal.lir.gen.LIRGenerationResult;
+import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory;
 
 /**
  * Specialization of {@link com.oracle.graal.lir.alloc.lsra.LinearScanAssignLocationsPhase} that
@@ -69,14 +70,17 @@
     protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder,
                     TraceLinearScanAllocationContext context) {
         TraceLinearScan allocator = context.allocator;
-        new Assigner(allocator).assignLocations();
+        MoveFactory spillMoveFactory = context.spillMoveFactory;
+        new Assigner(allocator, spillMoveFactory).assignLocations();
     }
 
     private static final class Assigner {
         private final TraceLinearScan allocator;
+        private final MoveFactory spillMoveFactory;
 
-        private Assigner(TraceLinearScan allocator) {
+        private Assigner(TraceLinearScan allocator, MoveFactory spillMoveFactory) {
             this.allocator = allocator;
+            this.spillMoveFactory = spillMoveFactory;
         }
 
         /**