summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/Global.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-09-28 15:53:33 +0000
committerMartin Odersky <odersky@gmail.com>2005-09-28 15:53:33 +0000
commitcc54f727041e4a0a814004ea48d70562d3602fcc (patch)
tree40327e3de988647233c742d6ea54080bf011170a /sources/scala/tools/nsc/Global.scala
parent9055a919a643f98e38c342d15037655dc50bca19 (diff)
downloadscala-cc54f727041e4a0a814004ea48d70562d3602fcc.tar.gz
scala-cc54f727041e4a0a814004ea48d70562d3602fcc.tar.bz2
scala-cc54f727041e4a0a814004ea48d70562d3602fcc.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/Global.scala')
-rwxr-xr-xsources/scala/tools/nsc/Global.scala23
1 files changed, 11 insertions, 12 deletions
diff --git a/sources/scala/tools/nsc/Global.scala b/sources/scala/tools/nsc/Global.scala
index 3c5f45806a..0648bd3c4e 100755
--- a/sources/scala/tools/nsc/Global.scala
+++ b/sources/scala/tools/nsc/Global.scala
@@ -20,6 +20,7 @@ import matching.TransMatcher;
import transform._;
import backend.icode.{ICodes, GenICode, Checkers};
import backend.ScalaPrimitives;
+import backend.jvm.BytecodeGenerators;
class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
with Trees
@@ -235,6 +236,10 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
val global: Global.this.type = Global.this;
}
+ object genJVM extends BytecodeGenerators {
+ val global: Global.this.type = Global.this;
+ }
+
object icodeChecker extends checkers.ICodeChecker();
object typer extends analyzer.Typer(analyzer.NoContext.make(EmptyTree, Global.this.definitions.RootClass, new Scope())) {
@@ -263,16 +268,13 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
flatten,
constructors,
mixin,
- if (settings.Xshowicode.value) genicode
- else sampleTransform);
-
-// Runs ----------------------------------------------------------------
+ genicode,
+ genJVM,
+ sampleTransform);
private var curRun: Run = NoRun;
override def currentRun: Run = curRun;
- type AttrInfo = Pair[Type, List[Any]];
-
class Run extends CompilerRun {
curRun = this;
override val firstPhase = syntaxAnalyzer.newPhase(NoPhase);
@@ -306,9 +308,6 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
override val erasurePhase = phaseNamed("erasure");
override val flattenPhase = phaseNamed("flatten");
- /** A map from symbols to their attributes */
- val attributes = new HashMap[Symbol, List[AttrInfo]];
-
private var unitbuf = new ListBuffer[CompilationUnit];
private var fileset = new HashSet[AbstractFile];
@@ -343,7 +342,7 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
globalPhase = globalPhase.next;
if (settings.check contains globalPhase.name) {
phase = globalPhase;
- if (globalPhase.name == "terminal" && settings.Xshowicode.value) icodeChecker.checkICodes;
+ if (globalPhase.name == "terminal") icodeChecker.checkICodes;
else checker.checkTrees;
}
if (settings.statistics.value) statistics.print(phase);
@@ -351,7 +350,7 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
if (settings.Xshowcls.value != "") showDef(newTermName(settings.Xshowcls.value), false);
if (settings.Xshowobj.value != "") showDef(newTermName(settings.Xshowobj.value), true);
- if (settings.Xshowicode.value) printICode();
+ if (settings.Xshowicode.value) writeICode();
if (reporter.errors() == 0) {
for (val Pair(sym, pickled) <- symData.elements.toList) {
@@ -447,7 +446,7 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
}
}
- private def printICode(): Unit = {
+ private def writeICode(): Unit = {
val printer = new icodePrinter.TextPrinter(new PrintWriter(System.out, true));
icodes.classes.foreach(printer.printClass);
}