@@ -10,7 +10,7 @@ import StdNames.str
1010import scala .internal .Chars .isIdentifierStart
1111import collection .immutable
1212import config .Config
13- import java . util .HashMap
13+ import util .LinearMap
1414
1515import scala .annotation .internal .sharable
1616
@@ -182,38 +182,16 @@ object Names {
182182 def underlying : TermName = unsupported(" underlying" )
183183
184184 @ sharable // because of synchronized block in `and`
185- private var derivedNames : immutable.Map [NameInfo , DerivedName ] | HashMap [NameInfo , DerivedName ] =
186- immutable.Map .empty[NameInfo , DerivedName ]
187-
188- private def getDerived (info : NameInfo ): DerivedName /* | Null */ = (derivedNames : @ unchecked) match {
189- case derivedNames : immutable.AbstractMap [NameInfo , DerivedName ] @ unchecked =>
190- if (derivedNames.contains(info)) derivedNames(info) else null
191- case derivedNames : HashMap [NameInfo , DerivedName ] @ unchecked =>
192- derivedNames.get(info)
193- }
194-
195- private def putDerived (info : NameInfo , name : DerivedName ): name.type = {
196- derivedNames match {
197- case derivedNames : immutable.Map [NameInfo , DerivedName ] @ unchecked =>
198- if (derivedNames.size < 4 )
199- this .derivedNames = derivedNames.updated(info, name)
200- else {
201- val newMap = new HashMap [NameInfo , DerivedName ]
202- derivedNames.foreach { case (k, v) => newMap.put(k, v) }
203- newMap.put(info, name)
204- this .derivedNames = newMap
205- }
206- case derivedNames : HashMap [NameInfo , DerivedName ] @ unchecked =>
207- derivedNames.put(info, name)
208- }
209- name
210- }
185+ private var derivedNames : LinearMap [NameInfo , DerivedName ] = LinearMap .Empty
211186
212187 private def add (info : NameInfo ): TermName = synchronized {
213- getDerived(info) match {
214- case null => putDerived(info, new DerivedName (this , info))
215- case derivedName => derivedName
216- }
188+ derivedNames(info) match
189+ case null =>
190+ val derivedName = new DerivedName (this , info)
191+ derivedNames = derivedNames.updated(info, derivedName)
192+ derivedName
193+ case derivedName =>
194+ derivedName
217195 }
218196
219197 private def rewrap (underlying : TermName ) =
0 commit comments