Reduce memory usage of ExtractDependenciesTraverser

This commit is contained in:
Adriaan Moors 2015-12-01 14:54:47 -08:00 committed by Eugene Yokota
parent 1ce1123054
commit 51524055f7
1 changed files with 5 additions and 8 deletions

View File

@ -95,12 +95,9 @@ final class Dependency(val global: CallbackGlobal) extends LocateClassFile {
}
private abstract class ExtractDependenciesTraverser extends Traverser {
protected val depBuf = collection.mutable.ArrayBuffer.empty[Symbol]
protected def addDependency(dep: Symbol): Unit = depBuf += dep
def dependencies: collection.immutable.Set[Symbol] = {
// convert to immutable set and remove NoSymbol if we have one
depBuf.toSet - NoSymbol
}
private val deps = collection.mutable.HashSet.empty[Symbol]
protected def addDependency(dep: Symbol): Unit = if (dep ne NoSymbol) deps += dep
def dependencies: Iterator[Symbol] = deps.iterator
}
private class ExtractDependenciesByMemberRefTraverser extends ExtractDependenciesTraverser {
@ -158,7 +155,7 @@ final class Dependency(val global: CallbackGlobal) extends LocateClassFile {
}
}
private def extractDependenciesByMemberRef(unit: CompilationUnit): collection.immutable.Set[Symbol] = {
private def extractDependenciesByMemberRef(unit: CompilationUnit): Iterator[Symbol] = {
val traverser = new ExtractDependenciesByMemberRefTraverser
traverser.traverse(unit.body)
val dependencies = traverser.dependencies
@ -184,7 +181,7 @@ final class Dependency(val global: CallbackGlobal) extends LocateClassFile {
}
}
private def extractDependenciesByInheritance(unit: CompilationUnit): collection.immutable.Set[Symbol] = {
private def extractDependenciesByInheritance(unit: CompilationUnit): Iterator[Symbol] = {
val traverser = new ExtractDependenciesByInheritanceTraverser
traverser.traverse(unit.body)
val dependencies = traverser.dependencies