Skip to content

Commit 84e69d1

Browse files
committed
Extract setCellAtIndex function that take nullable MutabilityOwnership
Mutable functions can invoke it passing mutator ownership. Immutable functions invoke it passing null ownership.
1 parent 37b54f2 commit 84e69d1

File tree

1 file changed

+8
-6
lines changed
  • core/commonMain/src/implementations/immutableSet

1 file changed

+8
-6
lines changed

core/commonMain/src/implementations/immutableSet/TrieNode.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,7 @@ internal class TrieNode<E>(
132132
cell = newNode
133133
}
134134

135-
val newBuffer = buffer.copyOf()
136-
newBuffer[nodeIndex] = cell
137-
return TrieNode(bitmap, newBuffer)
135+
return setCellAtIndex(nodeIndex, cell, owner = null)
138136
}
139137

140138
/** The given [newNode] must not be a part of any persistent set instance. */
@@ -152,12 +150,16 @@ internal class TrieNode<E>(
152150
cell = newNode
153151
}
154152

155-
if (ownedBy === owner) {
156-
buffer[nodeIndex] = cell
153+
return setCellAtIndex(nodeIndex, cell, owner)
154+
}
155+
156+
private fun setCellAtIndex(cellIndex: Int, newCell: Any?, owner: MutabilityOwnership?): TrieNode<E> {
157+
if (ownedBy != null && ownedBy === owner) {
158+
buffer[cellIndex] = newCell
157159
return this
158160
}
159161
val newBuffer = buffer.copyOf()
160-
newBuffer[nodeIndex] = cell
162+
newBuffer[cellIndex] = newCell
161163
return TrieNode(bitmap, newBuffer, owner)
162164
}
163165

0 commit comments

Comments
 (0)