hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java
changeset 46640 70bdce04c59b
parent 43972 1ade39b8381b
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java	Fri Jul 07 10:37:52 2017 +0200
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java	Fri Jul 07 09:40:47 2017 -0700
@@ -22,14 +22,26 @@
  */
 package org.graalvm.compiler.lir.phases;
 
+import static org.graalvm.compiler.core.common.GraalOptions.TraceRA;
+
 import org.graalvm.compiler.lir.alloc.lsra.LinearScanPhase;
+import org.graalvm.compiler.lir.alloc.trace.GlobalLivenessAnalysisPhase;
+import org.graalvm.compiler.lir.alloc.trace.TraceBuilderPhase;
+import org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPhase;
 import org.graalvm.compiler.lir.dfa.LocationMarkerPhase;
 import org.graalvm.compiler.lir.phases.AllocationPhase.AllocationContext;
 import org.graalvm.compiler.lir.stackslotalloc.SimpleStackSlotAllocator;
+import org.graalvm.compiler.options.OptionValues;
 
 public class EconomyAllocationStage extends LIRPhaseSuite<AllocationContext> {
-    public EconomyAllocationStage() {
-        appendPhase(new LinearScanPhase());
+    public EconomyAllocationStage(OptionValues options) {
+        if (TraceRA.getValue(options)) {
+            appendPhase(new TraceBuilderPhase());
+            appendPhase(new GlobalLivenessAnalysisPhase());
+            appendPhase(new TraceRegisterAllocationPhase());
+        } else {
+            appendPhase(new LinearScanPhase());
+        }
 
         // build frame map
         appendPhase(new SimpleStackSlotAllocator());