Skip to content

Commit 7364f53

Browse files
committed
Revert some changes in NameBuffer
This reverts soke changes from commit d4a5515. Use again a LinkedHashMap instead of a combination of EqHashMap and ArrayBuffer
1 parent 94efb07 commit 7364f53

File tree

1 file changed

+32
-30
lines changed

1 file changed

+32
-30
lines changed

compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ package tasty
66
import dotty.tools.tasty.TastyBuffer
77
import TastyBuffer._
88

9-
import collection.mutable.ArrayBuffer
9+
import collection.mutable
1010
import Names.{Name, chrs, SimpleName, DerivedName, TypeName}
1111
import NameKinds._
1212
import NameOps._
@@ -16,36 +16,38 @@ import NameTags.{SIGNED, TARGETSIGNED}
1616
class NameBuffer extends TastyBuffer(10000) {
1717
import NameBuffer._
1818

19-
private val nameRefs = new util.EqHashMap[Name, NameRef]
20-
private val nameBuf = new ArrayBuffer[Name]
19+
private val nameRefs = new mutable.LinkedHashMap[Name, NameRef]
2120

22-
def nameIndex(name: Name): NameRef =
21+
def nameIndex(name: Name): NameRef = {
2322
val name1 = name.toTermName
24-
val ref: NameRef | Null = nameRefs.lookup(name1)
25-
if ref != null then ref.uncheckedNN
26-
else
27-
name1 match
28-
case SignedName(original, Signature(params, result), target) =>
29-
nameIndex(original)
30-
if !original.matchesTargetName(target) then nameIndex(target)
31-
nameIndex(result)
32-
params.foreach {
33-
case param: TypeName =>
34-
nameIndex(param)
35-
case _ =>
36-
}
37-
case AnyQualifiedName(prefix, name) =>
38-
nameIndex(prefix); nameIndex(name)
39-
case AnyUniqueName(original, separator, num) =>
40-
nameIndex(separator)
41-
if (!original.isEmpty) nameIndex(original)
42-
case DerivedName(original, _) =>
43-
nameIndex(original)
44-
case _ =>
45-
val ref1 = NameRef(nameRefs.size)
46-
nameRefs(name1) = ref1
47-
nameBuf += name1
48-
ref1
23+
nameRefs.get(name1) match {
24+
case Some(ref) =>
25+
ref
26+
case None =>
27+
name1 match {
28+
case SignedName(original, Signature(params, result), target) =>
29+
nameIndex(original)
30+
if !original.matchesTargetName(target) then nameIndex(target)
31+
nameIndex(result)
32+
params.foreach {
33+
case param: TypeName =>
34+
nameIndex(param)
35+
case _ =>
36+
}
37+
case AnyQualifiedName(prefix, name) =>
38+
nameIndex(prefix); nameIndex(name)
39+
case AnyUniqueName(original, separator, num) =>
40+
nameIndex(separator)
41+
if (!original.isEmpty) nameIndex(original)
42+
case DerivedName(original, _) =>
43+
nameIndex(original)
44+
case _ =>
45+
}
46+
val ref = NameRef(nameRefs.size)
47+
nameRefs(name1) = ref
48+
ref
49+
}
50+
}
4951

5052
private inline def withLength(inline op: Unit, lengthWidth: Int = 1): Unit = {
5153
val lengthAddr = currentAddr
@@ -112,7 +114,7 @@ class NameBuffer extends TastyBuffer(10000) {
112114

113115
override def assemble(): Unit = {
114116
var i = 0
115-
for name <- nameBuf do
117+
for (name, ref) <- nameRefs do
116118
val ref = nameRefs(name)
117119
assert(ref.index == i)
118120
i += 1

0 commit comments

Comments
 (0)