summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/Global.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-04-11 17:05:34 +0000
committerMartin Odersky <odersky@gmail.com>2008-04-11 17:05:34 +0000
commit551db35802532b66e15638213d7b0010efe95ab4 (patch)
treefc271e4e95077fdb508822010383b59acedb4a2d /src/compiler/scala/tools/nsc/Global.scala
parent2fa3294cd903021db12cc93d9477318b128e68ba (diff)
downloadscala-551db35802532b66e15638213d7b0010efe95ab4.tar.gz
scala-551db35802532b66e15638213d7b0010efe95ab4.tar.bz2
scala-551db35802532b66e15638213d7b0010efe95ab4.zip
(1) add devirtualization phase.
Diffstat (limited to 'src/compiler/scala/tools/nsc/Global.scala')
-rw-r--r--src/compiler/scala/tools/nsc/Global.scala8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala
index 8e82d056ed..1125cd6f4c 100644
--- a/src/compiler/scala/tools/nsc/Global.scala
+++ b/src/compiler/scala/tools/nsc/Global.scala
@@ -282,6 +282,10 @@ class Global(var settings: Settings, var reporter: Reporter) extends SymbolTable
val global: Global.this.type = Global.this
}
+ object devirtualize extends DeVirtualize {
+ val global: Global.this.type = Global.this
+ }
+
object refchecks extends RefChecks {
val global: Global.this.type = Global.this
}
@@ -391,7 +395,8 @@ class Global(var settings: Settings, var reporter: Reporter) extends SymbolTable
analyzer.namerFactory: SubComponent, // note: types are there because otherwise
analyzer.typerFactory: SubComponent, // consistency check after refchecks would fail.
superAccessors, // add super accessors
- pickler, // serializes symbol tables
+ pickler, // serialize symbol tables
+ devirtualize, // expand virtual classes
refchecks // perform reference and override checking, translate nested objects
) ::: (
if (forJVM) List(liftcode) else List() // generate reified trees
@@ -501,6 +506,7 @@ class Global(var settings: Settings, var reporter: Reporter) extends SymbolTable
val namerPhase = phaseNamed("namer")
val typerPhase = phaseNamed("typer")
+ val picklerPhase = phaseNamed("pickler")
val refchecksPhase = phaseNamed("refchecks")
val explicitOuterPhase = phaseNamed("explicitouter")