@@ -6,7 +6,7 @@ package tasty
6
6
import dotty .tools .tasty .TastyBuffer
7
7
import TastyBuffer ._
8
8
9
- import collection .mutable . ArrayBuffer
9
+ import collection .mutable
10
10
import Names .{Name , chrs , SimpleName , DerivedName , TypeName }
11
11
import NameKinds ._
12
12
import NameOps ._
@@ -16,36 +16,38 @@ import NameTags.{SIGNED, TARGETSIGNED}
16
16
class NameBuffer extends TastyBuffer (10000 ) {
17
17
import NameBuffer ._
18
18
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 ]
21
20
22
- def nameIndex (name : Name ): NameRef =
21
+ def nameIndex (name : Name ): NameRef = {
23
22
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
+ }
49
51
50
52
private inline def withLength (inline op : Unit , lengthWidth : Int = 1 ): Unit = {
51
53
val lengthAddr = currentAddr
@@ -112,7 +114,7 @@ class NameBuffer extends TastyBuffer(10000) {
112
114
113
115
override def assemble (): Unit = {
114
116
var i = 0
115
- for name <- nameBuf do
117
+ for ( name, ref) <- nameRefs do
116
118
val ref = nameRefs(name)
117
119
assert(ref.index == i)
118
120
i += 1
0 commit comments