@@ -181,7 +181,6 @@ internal class TrieNode<K, V>(
181
181
182
182
/* * The given [newNode] must not be a part of any persistent map instance. */
183
183
private fun updateNodeAtIndex (nodeIndex : Int , positionMask : Int , newNode : TrieNode <K , V >, owner : MutabilityOwnership ? = null): TrieNode <K , V > {
184
- // assert(buffer[nodeIndex] !== newNode)
185
184
val newNodeBuffer = newNode.buffer
186
185
if (newNodeBuffer.size == 2 && newNode.nodeMap == 0 ) {
187
186
if (buffer.size == 1 ) {
@@ -764,19 +763,17 @@ internal class TrieNode<K, V>(
764
763
} else {
765
764
targetNode.mutableRemove(keyHash, key, shift + LOG_MAX_BRANCHING_FACTOR , mutator)
766
765
}
767
- return mutableReplaceNode(targetNode, newNode, nodeIndex, keyPositionMask, mutator.ownership)
766
+ return mutableReplaceNode(newNode, nodeIndex, keyPositionMask, mutator.ownership)
768
767
}
769
768
770
769
// key is absent
771
770
return this
772
771
}
773
772
774
- private fun mutableReplaceNode (targetNode : TrieNode < K , V >, newNode : TrieNode <K , V >? , nodeIndex : Int , positionMask : Int , owner : MutabilityOwnership ) = when {
773
+ private fun mutableReplaceNode (newNode : TrieNode <K , V >? , nodeIndex : Int , positionMask : Int , owner : MutabilityOwnership ) = when {
775
774
newNode == null ->
776
775
mutableRemoveNodeAtIndex(nodeIndex, positionMask, owner)
777
- targetNode != = newNode ->
778
- updateNodeAtIndex(nodeIndex, positionMask, newNode, owner)
779
- else -> this
776
+ else -> updateNodeAtIndex(nodeIndex, positionMask, newNode, owner)
780
777
}
781
778
782
779
fun remove (keyHash : Int , key : K , value : @UnsafeVariance V , shift : Int ): TrieNode <K , V >? {
@@ -826,7 +823,7 @@ internal class TrieNode<K, V>(
826
823
} else {
827
824
targetNode.mutableRemove(keyHash, key, value, shift + LOG_MAX_BRANCHING_FACTOR , mutator)
828
825
}
829
- return mutableReplaceNode(targetNode, newNode, nodeIndex, keyPositionMask, mutator.ownership)
826
+ return mutableReplaceNode(newNode, nodeIndex, keyPositionMask, mutator.ownership)
830
827
}
831
828
832
829
// key is absent
0 commit comments