@@ -337,10 +337,8 @@ internal class TrieNode<K, V>(
337
337
return TrieNode (dataMap, nodeMap xor positionMask, newBuffer, owner)
338
338
}
339
339
340
- private fun collisionContainsKey (key : K ): Boolean {
340
+ private fun collisionContainsKey (keyHash : Int , key : K ): Boolean {
341
341
val collisionHash = keyAtIndex(0 ).hashCode()
342
- val keyHash = key.hashCode()
343
-
344
342
if (keyHash != collisionHash) {
345
343
return false
346
344
}
@@ -351,10 +349,8 @@ internal class TrieNode<K, V>(
351
349
return false
352
350
}
353
351
354
- private fun collisionGet (key : K ): V ? {
352
+ private fun collisionGet (keyHash : Int , key : K ): V ? {
355
353
val collisionHash = keyAtIndex(0 ).hashCode()
356
- val keyHash = key.hashCode()
357
-
358
354
if (keyHash != collisionHash) {
359
355
return null
360
356
}
@@ -367,10 +363,8 @@ internal class TrieNode<K, V>(
367
363
return null
368
364
}
369
365
370
- private fun collisionPut (key : K , value : V , shift : Int ): ModificationResult <K , V >? {
366
+ private fun collisionPut (keyHash : Int , key : K , value : V , shift : Int ): ModificationResult <K , V >? {
371
367
val collisionHash = keyAtIndex(0 ).hashCode()
372
- val keyHash = key.hashCode()
373
-
374
368
if (keyHash != collisionHash) {
375
369
return makeNode(collisionHash, this , keyHash, key, value, shift, null ).asInsertResult()
376
370
}
@@ -389,10 +383,8 @@ internal class TrieNode<K, V>(
389
383
return makeCollisionNode(newBuffer, null ).asInsertResult()
390
384
}
391
385
392
- private fun mutableCollisionPut (key : K , value : V , shift : Int , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V > {
386
+ private fun mutableCollisionPut (keyHash : Int , key : K , value : V , shift : Int , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V > {
393
387
val collisionHash = keyAtIndex(0 ).hashCode()
394
- val keyHash = key.hashCode()
395
-
396
388
if (keyHash != collisionHash) {
397
389
mutator.size++
398
390
return makeNode(collisionHash, this , keyHash, key, value, shift, mutator.ownership)
@@ -423,10 +415,8 @@ internal class TrieNode<K, V>(
423
415
return makeCollisionNode(newBuffer, mutator.ownership)
424
416
}
425
417
426
- private fun collisionRemove (key : K ): TrieNode <K , V >? {
418
+ private fun collisionRemove (keyHash : Int , key : K ): TrieNode <K , V >? {
427
419
val collisionHash = keyAtIndex(0 ).hashCode()
428
- val keyHash = key.hashCode()
429
-
430
420
if (keyHash != collisionHash) {
431
421
return this
432
422
}
@@ -439,10 +429,8 @@ internal class TrieNode<K, V>(
439
429
return this
440
430
}
441
431
442
- private fun mutableCollisionRemove (key : K , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
432
+ private fun mutableCollisionRemove (keyHash : Int , key : K , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
443
433
val collisionHash = keyAtIndex(0 ).hashCode()
444
- val keyHash = key.hashCode()
445
-
446
434
if (keyHash != collisionHash) {
447
435
return this
448
436
}
@@ -455,10 +443,8 @@ internal class TrieNode<K, V>(
455
443
return this
456
444
}
457
445
458
- private fun collisionRemove (key : K , value : V ): TrieNode <K , V >? {
446
+ private fun collisionRemove (keyHash : Int , key : K , value : V ): TrieNode <K , V >? {
459
447
val collisionHash = keyAtIndex(0 ).hashCode()
460
- val keyHash = key.hashCode()
461
-
462
448
if (keyHash != collisionHash) {
463
449
return this
464
450
}
@@ -471,10 +457,8 @@ internal class TrieNode<K, V>(
471
457
return this
472
458
}
473
459
474
- private fun mutableCollisionRemove (key : K , value : V , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
460
+ private fun mutableCollisionRemove (keyHash : Int , key : K , value : V , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
475
461
val collisionHash = keyAtIndex(0 ).hashCode()
476
- val keyHash = key.hashCode()
477
-
478
462
if (keyHash != collisionHash) {
479
463
return this
480
464
}
@@ -489,7 +473,7 @@ internal class TrieNode<K, V>(
489
473
490
474
fun containsKey (keyHash : Int , key : K , shift : Int ): Boolean {
491
475
if (isCollision()) {
492
- return collisionContainsKey(key)
476
+ return collisionContainsKey(keyHash, key)
493
477
}
494
478
495
479
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -508,7 +492,7 @@ internal class TrieNode<K, V>(
508
492
509
493
fun get (keyHash : Int , key : K , shift : Int ): V ? {
510
494
if (isCollision()) {
511
- return collisionGet(key)
495
+ return collisionGet(keyHash, key)
512
496
}
513
497
514
498
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -532,7 +516,7 @@ internal class TrieNode<K, V>(
532
516
533
517
fun put (keyHash : Int , key : K , value : @UnsafeVariance V , shift : Int ): ModificationResult <K , V >? {
534
518
if (isCollision()) {
535
- return collisionPut(key, value, shift)
519
+ return collisionPut(keyHash, key, value, shift)
536
520
}
537
521
538
522
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -561,7 +545,7 @@ internal class TrieNode<K, V>(
561
545
562
546
fun mutablePut (keyHash : Int , key : K , value : @UnsafeVariance V , shift : Int , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V > {
563
547
if (isCollision()) {
564
- return mutableCollisionPut(key, value, shift, mutator)
548
+ return mutableCollisionPut(keyHash, key, value, shift, mutator)
565
549
}
566
550
567
551
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -598,7 +582,7 @@ internal class TrieNode<K, V>(
598
582
599
583
fun remove (keyHash : Int , key : K , shift : Int ): TrieNode <K , V >? {
600
584
if (isCollision()) {
601
- return collisionRemove(key)
585
+ return collisionRemove(keyHash, key)
602
586
}
603
587
604
588
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -629,7 +613,7 @@ internal class TrieNode<K, V>(
629
613
630
614
fun mutableRemove (keyHash : Int , key : K , shift : Int , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
631
615
if (isCollision()) {
632
- return mutableCollisionRemove(key, mutator)
616
+ return mutableCollisionRemove(keyHash, key, mutator)
633
617
}
634
618
635
619
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -660,7 +644,7 @@ internal class TrieNode<K, V>(
660
644
661
645
fun remove (keyHash : Int , key : K , value : @UnsafeVariance V , shift : Int ): TrieNode <K , V >? {
662
646
if (isCollision()) {
663
- return collisionRemove(key, value)
647
+ return collisionRemove(keyHash, key, value)
664
648
}
665
649
666
650
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
@@ -691,7 +675,7 @@ internal class TrieNode<K, V>(
691
675
692
676
fun mutableRemove (keyHash : Int , key : K , value : @UnsafeVariance V , shift : Int , mutator : PersistentHashMapBuilder <K , V >): TrieNode <K , V >? {
693
677
if (isCollision()) {
694
- return mutableCollisionRemove(key, value, mutator)
678
+ return mutableCollisionRemove(keyHash, key, value, mutator)
695
679
}
696
680
697
681
val keyPositionMask = 1 shl indexSegment(keyHash, shift)
0 commit comments