Skip to content

Commit 1a26f6f

Browse files
committed
Use AnyRefMap in MutableSymbolMap
1 parent bd11851 commit 1a26f6f

File tree

1 file changed

+14
-44
lines changed

1 file changed

+14
-44
lines changed

compiler/src/dotty/tools/dotc/core/Symbols.scala

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -637,68 +637,38 @@ object Symbols {
637637
@sharable var stubs: List[Symbol] = Nil // diagnostic only
638638

639639
/* Mutable map from symbols any T */
640-
class MutableSymbolMap[T](private[Symbols] val value: java.util.IdentityHashMap[Symbol, T]) extends AnyVal {
640+
class MutableSymbolMap[T](private[Symbols] val value: mutable.AnyRefMap[Symbol, T]) extends AnyVal {
641641

642-
def apply(sym: Symbol): T = value.get(sym)
642+
def apply(sym: Symbol): T = value(sym)
643643

644-
def get(sym: Symbol): Option[T] = Option(value.get(sym))
644+
def get(sym: Symbol): Option[T] = value.get(sym)
645645

646-
def getOrElse[U >: T](sym: Symbol, default: => U): U = {
647-
val v = value.get(sym)
648-
if (v != null) v else default
649-
}
646+
def getOrElse[U >: T](sym: Symbol, default: => U): U = value.getOrElse(sym, default)
650647

651-
def getOrElseUpdate(sym: Symbol, op: => T): T = {
652-
val v = value.get(sym)
653-
if (v != null) v
654-
else {
655-
val v = op
656-
assert(v != null)
657-
value.put(sym, v)
658-
v
659-
}
660-
}
648+
def getOrElseUpdate(sym: Symbol, op: => T): T = value.getOrElseUpdate(sym, op)
661649

662-
def update(sym: Symbol, x: T): Unit = {
663-
assert(x != null)
664-
value.put(sym, x)
665-
}
666-
def put(sym: Symbol, x: T): T = {
667-
assert(x != null)
668-
value.put(sym, x)
669-
}
650+
def update(sym: Symbol, x: T): Unit = value.update(sym, x)
670651

671652
def -=(sym: Symbol): Unit = value.remove(sym)
672-
def remove(sym: Symbol): Option[T] = Option(value.remove(sym))
653+
def remove(sym: Symbol): Option[T] = value.remove(sym)
673654

674-
def contains(sym: Symbol): Boolean = value.containsKey(sym)
655+
def contains(sym: Symbol): Boolean = value.contains(sym)
675656

676657
def isEmpty: Boolean = value.isEmpty
677658

678659
def clear(): Unit = value.clear()
679660

680-
def filter(p: ((Symbol, T)) => Boolean): Map[Symbol, T] = {
681-
import scala.collection.JavaConversions._
682-
value.toMap.filter(p)
683-
}
661+
def filter(p: ((Symbol, T)) => Boolean): Map[Symbol, T] = value.iterator.filter(p).toMap
684662

685-
def iterator: Iterator[(Symbol, T)] = {
686-
import scala.collection.JavaConversions._
687-
value.iterator
688-
}
663+
def iterator: Iterator[(Symbol, T)] = value.iterator
689664

690-
def keysIterator: Iterator[Symbol] = {
691-
import scala.collection.JavaConversions._
692-
value.keySet().iterator
693-
}
665+
def keysIterator: Iterator[Symbol] = value.keysIterator
666+
667+
def toMap: Map[Symbol, T] = value.toMap
694668

695-
def toMap: Map[Symbol, T] = {
696-
import scala.collection.JavaConversions._
697-
value.toMap
698-
}
699669
}
700670

701671
@inline def newMutableSymbolMap[T]: MutableSymbolMap[T] =
702-
new MutableSymbolMap(new java.util.IdentityHashMap[Symbol, T]())
672+
new MutableSymbolMap(new mutable.AnyRefMap[Symbol, T]())
703673

704674
}

0 commit comments

Comments
 (0)