changeset 19268:08d6cbe5821a

LowLevelSuites: document the capabilities of the different tiers.
author Josef Eisl <josef.eisl@jku.at>
date Tue, 10 Feb 2015 19:08:40 +0100
parents c83c841222b0
children 2bede191a649
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelSuites.java
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelSuites.java	Tue Feb 10 16:48:08 2015 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelSuites.java	Tue Feb 10 19:08:40 2015 +0100
@@ -22,6 +22,9 @@
  */
 package com.oracle.graal.lir.phases;
 
+import com.oracle.graal.api.code.*;
+import com.oracle.graal.lir.*;
+import com.oracle.graal.lir.gen.*;
 import com.oracle.graal.lir.phases.LowLevelHighTierPhase.LowLevelHighTierContext;
 import com.oracle.graal.lir.phases.LowLevelLowTierPhase.LowLevelLowTierContext;
 import com.oracle.graal.lir.phases.LowLevelMidTierPhase.LowLevelMidTierContext;
@@ -38,14 +41,36 @@
         this.lowTier = lowTier;
     }
 
+    /**
+     * {@link LowLevelHighTierPhase}s are executed between {@link LIR} generation and register
+     * allocation.
+     * <p>
+     * {@link LowLevelHighTierPhase Implementers} can create new
+     * {@link LIRGeneratorTool#newVariable variables}, {@link LIRGenerationResult#getFrameMap stack
+     * slots} and {@link LIRGenerationResult#getFrameMapBuilder virtual stack slots}.
+     */
     public LowLevelPhaseSuite<LowLevelHighTierContext> getHighTier() {
         return highTier;
     }
 
+    /**
+     * {@link LowLevelMidTierPhase}s are responsible for register allocation and translating
+     * {@link VirtualStackSlot}s into {@link StackSlot}s.
+     * <p>
+     * After the {@link LowLevelMidTier} there should be no more {@link Variable}s and
+     * {@link VirtualStackSlot}s.
+     */
     public LowLevelPhaseSuite<LowLevelMidTierContext> getMidTier() {
         return midTier;
     }
 
+    /**
+     * {@link LowLevelLowTierPhase}s are executed after register allocation and before machine code
+     * generation.
+     * <p>
+     * A {@link LowLevelLowTierPhase} must not introduce new {@link Variable}s,
+     * {@link VirtualStackSlot}s or {@link StackSlot}s.
+     */
     public LowLevelPhaseSuite<LowLevelLowTierContext> getLowTier() {
         return lowTier;
     }