diff options
author | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-03-16 12:02:07 +0100 |
---|---|---|
committer | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-03-16 12:02:07 +0100 |
commit | 9b98abf49849549eec4b2cf09e029b745abb0557 (patch) | |
tree | 7a595ec9fca812b0b4c28db99eff63bf80fe529f | |
parent | 3f47afb0f8655b734ed432002a9e07aad92e7867 (diff) | |
download | dotty-9b98abf49849549eec4b2cf09e029b745abb0557.tar.gz dotty-9b98abf49849549eec4b2cf09e029b745abb0557.tar.bz2 dotty-9b98abf49849549eec4b2cf09e029b745abb0557.zip |
Cache the Phases we need in JSCodeGen like all other phases.
-rw-r--r-- | src/dotty/tools/backend/sjs/JSCodeGen.scala | 11 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Phases.scala | 4 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/dotty/tools/backend/sjs/JSCodeGen.scala b/src/dotty/tools/backend/sjs/JSCodeGen.scala index 006c9f674..de5c8711d 100644 --- a/src/dotty/tools/backend/sjs/JSCodeGen.scala +++ b/src/dotty/tools/backend/sjs/JSCodeGen.scala @@ -58,11 +58,6 @@ class JSCodeGen()(implicit ctx: Context) { private val positionConversions = new JSPositions()(ctx) import positionConversions.{pos2irPos, implicitPos2irPos} - private val elimRepeatedPhase = - ctx.phaseOfClass(classOf[dotty.tools.dotc.transform.ElimRepeated]) - private val elimErasedValueTypePhase = - ctx.phaseOfClass(classOf[dotty.tools.dotc.transform.ElimErasedValueType]) - // Some state -------------------------------------------------------------- private val currentClassSym = new ScopedVar[Symbol] @@ -1743,7 +1738,7 @@ class JSCodeGen()(implicit ctx: Context) { if (isStat) { boxedResult } else { - val tpe = ctx.atPhase(elimErasedValueTypePhase) { implicit ctx => + val tpe = ctx.atPhase(ctx.elimErasedValueTypePhase) { implicit ctx => sym.info.finalResultType } unbox(boxedResult, tpe) @@ -2208,12 +2203,12 @@ class JSCodeGen()(implicit ctx: Context) { def paramNamesAndTypes(implicit ctx: Context): List[(Names.TermName, Type)] = sym.info.paramNamess.flatten.zip(sym.info.paramTypess.flatten) - val wereRepeated = ctx.atPhase(elimRepeatedPhase) { implicit ctx => + val wereRepeated = ctx.atPhase(ctx.elimRepeatedPhase) { implicit ctx => for ((name, tpe) <- paramNamesAndTypes) yield (name -> tpe.isRepeatedParam) }.toMap - val paramTypes = ctx.atPhase(elimErasedValueTypePhase) { implicit ctx => + val paramTypes = ctx.atPhase(ctx.elimErasedValueTypePhase) { implicit ctx => paramNamesAndTypes }.toMap diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala index b60f437d5..ce87506ae 100644 --- a/src/dotty/tools/dotc/core/Phases.scala +++ b/src/dotty/tools/dotc/core/Phases.scala @@ -233,8 +233,10 @@ object Phases { private val picklerCache = new PhaseCache(classOf[Pickler]) private val refChecksCache = new PhaseCache(classOf[RefChecks]) + private val elimRepeatedCache = new PhaseCache(classOf[ElimRepeated]) private val extensionMethodsCache = new PhaseCache(classOf[ExtensionMethods]) private val erasureCache = new PhaseCache(classOf[Erasure]) + private val elimErasedValueTypeCache = new PhaseCache(classOf[ElimErasedValueType]) private val patmatCache = new PhaseCache(classOf[PatternMatcher]) private val lambdaLiftCache = new PhaseCache(classOf[LambdaLift]) private val flattenCache = new PhaseCache(classOf[Flatten]) @@ -245,8 +247,10 @@ object Phases { def typerPhase = typerCache.phase def picklerPhase = picklerCache.phase def refchecksPhase = refChecksCache.phase + def elimRepeatedPhase = elimRepeatedCache.phase def extensionMethodsPhase = extensionMethodsCache.phase def erasurePhase = erasureCache.phase + def elimErasedValueTypePhase = elimErasedValueTypeCache.phase def patmatPhase = patmatCache.phase def lambdaLiftPhase = lambdaLiftCache.phase def flattenPhase = flattenCache.phase |