@@ -5,11 +5,10 @@ import scala.scalanative.runtime._
5
5
import scala .scalanative .runtime .Intrinsics ._
6
6
import scala .scalanative .unsafe .Ptr
7
7
import scala .scalanative .libc .stdlib
8
- import scala .collection .mutable
9
8
import LibUV ._
10
9
11
10
private [loop] object HandleUtils {
12
- private val references = mutable. Map .empty [Object , Int ]
11
+ private val references = new java.util. IdentityHashMap [Object , Int ]()
13
12
14
13
@ inline def getData [T <: Object ](handle : Ptr [Byte ]): T = {
15
14
// data is the first member of uv_loop_t
@@ -25,8 +24,7 @@ private[loop] object HandleUtils {
25
24
// data is the first member of uv_loop_t
26
25
val ptrOfPtr = handle.asInstanceOf [Ptr [Ptr [Byte ]]]
27
26
if (obj != null ) {
28
- if (references.contains(obj)) references(obj) += 1
29
- else references(obj) = 1
27
+ references.put(obj, references.get(obj) + 1 )
30
28
val rawptr = castObjectToRawPtr(obj)
31
29
! ptrOfPtr = fromRawPtr[Byte ](rawptr)
32
30
} else {
@@ -40,8 +38,8 @@ private[loop] object HandleUtils {
40
38
if (getData(handle) != null ) {
41
39
uv_close(handle, onCloseCB)
42
40
val data = getData[Object ](handle)
43
- val current = references(data)
44
- if (current > 1 ) references(data) -= 1
41
+ val current = references.get (data)
42
+ if (current > 1 ) references.put (data, current - 1 )
45
43
else references.remove(data)
46
44
setData(handle, null )
47
45
}
0 commit comments