aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/GenBCode.scala
diff options
context:
space:
mode:
authorNicolas Stucki <nicolas.stucki@gmail.com>2016-07-05 10:50:47 +0200
committerNicolas Stucki <nicolas.stucki@gmail.com>2016-07-13 10:30:12 +0200
commit468ff9c0fd341395d39eb57959755fb718990035 (patch)
tree4fcdbb476adc8772c70a80e370a0be3786287669 /src/dotty/tools/backend/jvm/GenBCode.scala
parentbef40b45f6c15bf55fa73ea7923cb4da74cf77d0 (diff)
downloaddotty-468ff9c0fd341395d39eb57959755fb718990035.tar.gz
dotty-468ff9c0fd341395d39eb57959755fb718990035.tar.bz2
dotty-468ff9c0fd341395d39eb57959755fb718990035.zip
Fix #1209: Skip redundant superclasses\supertraits.
Diffstat (limited to 'src/dotty/tools/backend/jvm/GenBCode.scala')
-rw-r--r--src/dotty/tools/backend/jvm/GenBCode.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/dotty/tools/backend/jvm/GenBCode.scala b/src/dotty/tools/backend/jvm/GenBCode.scala
index e5b227a97..902f73ae2 100644
--- a/src/dotty/tools/backend/jvm/GenBCode.scala
+++ b/src/dotty/tools/backend/jvm/GenBCode.scala
@@ -4,6 +4,7 @@ import dotty.tools.dotc.CompilationUnit
import dotty.tools.dotc.ast.Trees.{ValDef, PackageDef}
import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.core.Phases.Phase
+import dotty.tools.dotc.core.Names.TypeName
import scala.collection.mutable
import scala.tools.asm.{CustomAttr, ClassVisitor, MethodVisitor, FieldVisitor}
@@ -41,11 +42,18 @@ class GenBCode extends Phase {
private val entryPoints = new mutable.HashSet[Symbol]()
def registerEntryPoint(sym: Symbol) = entryPoints += sym
+ private val superCallsMap = new mutable.HashMap[Symbol, Set[ClassSymbol]]()
+ def registerSuperCall(sym: Symbol, calls: ClassSymbol) = {
+ val old = superCallsMap.getOrElse(sym, Set.empty)
+ superCallsMap.put(sym, old + calls)
+ }
+
def outputDir(implicit ctx: Context): AbstractFile =
new PlainDirectory(new Directory(new JFile(ctx.settings.d.value)))
def run(implicit ctx: Context): Unit = {
- new GenBCodePipeline(entryPoints.toList, new DottyBackendInterface(outputDir)(ctx))(ctx).run(ctx.compilationUnit.tpdTree)
+ new GenBCodePipeline(entryPoints.toList,
+ new DottyBackendInterface(outputDir, superCallsMap.toMap)(ctx))(ctx).run(ctx.compilationUnit.tpdTree)
entryPoints.clear()
}
}