hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java
--- 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());