diff options
author | Rory Graves <rory.graves@fieldmark.co.uk> | 2016-09-16 17:50:19 +0100 |
---|---|---|
committer | Rory Graves <rory.graves@fieldmark.co.uk> | 2017-01-16 19:38:32 +0000 |
commit | 9f2aa0d1124864bc85c98d5ea40089f6dfcc5b5b (patch) | |
tree | ef2b1c6659b2f87c9351abfb949645577b402c42 /src/reflect/scala/reflect | |
parent | 827d69d48e96d9add75ce19e06b374610784c936 (diff) | |
download | scala-9f2aa0d1124864bc85c98d5ea40089f6dfcc5b5b.tar.gz scala-9f2aa0d1124864bc85c98d5ea40089f6dfcc5b5b.tar.bz2 scala-9f2aa0d1124864bc85c98d5ea40089f6dfcc5b5b.zip |
Improve performance of Symbol marking
Diffstat (limited to 'src/reflect/scala/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Symbols.scala | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala index e664b5ad08..890a5796e9 100644 --- a/src/reflect/scala/reflect/internal/Symbols.scala +++ b/src/reflect/scala/reflect/internal/Symbols.scala @@ -3676,9 +3676,15 @@ trait Symbols extends api.Symbols { self: SymbolTable => val AllOps = SymbolOps(isFlagRelated = false, mask = 0L) def FlagOps(mask: Long) = SymbolOps(isFlagRelated = true, mask = mask) - private def relevantSymbols(syms: Seq[Symbol]) = syms.flatMap(sym => List(sym, sym.moduleClass, sym.sourceModule)) - def markFlagsCompleted(syms: Symbol*)(mask: Long): Unit = relevantSymbols(syms).foreach(_.markFlagsCompleted(mask)) - def markAllCompleted(syms: Symbol*): Unit = relevantSymbols(syms).foreach(_.markAllCompleted) + private def forEachRelevantSymbols(syms: Seq[Symbol], fn: Symbol => Unit): Unit = + syms.foreach { sym => + fn(sym) + fn(sym.moduleClass) + fn(sym.sourceModule) + } + + def markFlagsCompleted(syms: Symbol*)(mask: Long): Unit = forEachRelevantSymbols(syms, _.markFlagsCompleted(mask)) + def markAllCompleted(syms: Symbol*): Unit = forEachRelevantSymbols(syms, _.markAllCompleted) } object SymbolsStats { |