summaryrefslogtreecommitdiff
path: root/sources/scalac
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2004-07-05 16:40:36 +0000
committerIulian Dragos <jaguarul@gmail.com>2004-07-05 16:40:36 +0000
commitbd56492ebd57dc26170a8b825061281981516611 (patch)
treef745d2a6681c808a1734faab8735cd84dc66bec1 /sources/scalac
parent379107dc6e0d9cc64cbc4163745a542a15129d34 (diff)
downloadscala-bd56492ebd57dc26170a8b825061281981516611.tar.gz
scala-bd56492ebd57dc26170a8b825061281981516611.tar.bz2
scala-bd56492ebd57dc26170a8b825061281981516611.zip
Added wholeprog phase to compiler
Diffstat (limited to 'sources/scalac')
-rw-r--r--sources/scalac/CompilerPhases.java7
-rw-r--r--sources/scalac/transformer/WholeProgPhase.java44
2 files changed, 51 insertions, 0 deletions
diff --git a/sources/scalac/CompilerPhases.java b/sources/scalac/CompilerPhases.java
index daaf55c34c..3dc4e9a24f 100644
--- a/sources/scalac/CompilerPhases.java
+++ b/sources/scalac/CompilerPhases.java
@@ -33,6 +33,7 @@ public abstract class CompilerPhases {
public final PhaseDescriptor EXPLICITOUTER;
public final PhaseDescriptor ADDCONSTRUCTORS;
public final PhaseDescriptor TAILCALL;
+ public final PhaseDescriptor WHOLEPROG;
public final PhaseDescriptor ADDINTERFACES;
public final PhaseDescriptor EXPANDMIXIN;
public final PhaseDescriptor MAKEBOXINGEXPLICIT;
@@ -61,6 +62,7 @@ public abstract class CompilerPhases {
protected Class ADDACCESSORS_PHASE() { return scalac.transformer.AddAccessorsPhase.class; }
protected Class ADDCONSTRUCTORS_PHASE() { return scalac.transformer.AddConstructorsPhase.class; }
protected Class TAILCALL_PHASE() { return scalac.transformer.TailCallPhase.class; }
+ protected Class WHOLEPROG_PHASE() { return scalac.util.EmptyPhase.class; } // No java version
protected Class ADDINTERFACES_PHASE() { return scalac.transformer.AddInterfacesPhase.class; }
protected Class EXPANDMIXIN_PHASE() { return scalac.transformer.ExpandMixinsPhase.class; }
protected Class ERASURE_PHASE() { return scalac.transformer.ErasurePhase.class; }
@@ -136,6 +138,11 @@ public abstract class CompilerPhases {
"add tail-calls",
"added tail-calls",
TAILCALL_PHASE()),
+ this.WHOLEPROG = new PhaseDescriptor(
+ "wholeprog",
+ "perform whole program analysis",
+ "find monomorphic callsites and performs inlining",
+ WHOLEPROG_PHASE()),
this.ADDINTERFACES = new PhaseDescriptor(
"addinterfaces",
"add one interface per class",
diff --git a/sources/scalac/transformer/WholeProgPhase.java b/sources/scalac/transformer/WholeProgPhase.java
new file mode 100644
index 0000000000..5d97f4abdc
--- /dev/null
+++ b/sources/scalac/transformer/WholeProgPhase.java
@@ -0,0 +1,44 @@
+/* ____ ____ ____ ____ ______ *\
+** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
+** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
+** /_____/\____/\___/\____/____/ **
+\* */
+
+package scalac.transformer;
+
+import scalac.Global;
+import scalac.Phase;
+import scalac.PhaseDescriptor;
+import scalac.CompilationUnit;
+import scalac.checkers.TreeChecker;
+import scalac.symtab.Definitions;
+
+import ch.epfl.lamp.util.CodePrinter;
+import scalac.atree.ATreePrinter;
+
+
+/**
+ * This class represents the wholeprog phase for the java version
+ * of the compiler. It doesn't do anything but permit to make
+ * a bridge between the java implementation of Socos et the
+ * scala one. See scala.tools.scalac.wholeprog.WholeProgPhase for
+ * implementation
+ */
+public class WholeProgPhase extends Phase {
+
+ /** Initializes this instance. */
+ public WholeProgPhase(Global global, PhaseDescriptor descriptor) {
+ super(global, descriptor);
+
+ }
+
+ //########################################################################
+ // Public Methods
+
+ /** Applies this phase to the given compilation units. */
+ public void apply(CompilationUnit[] units) {
+ // This java version doesn't make anything
+ }
+
+}
+