Pass in-tree reference to mergeWithChild
This commit is contained in:
@@ -1606,6 +1606,7 @@ void rezero(Node *n, InternalVersionT z) {
|
|||||||
|
|
||||||
void mergeWithChild(Node *&self, WriteContext *tls, ConflictSet::Impl *impl,
|
void mergeWithChild(Node *&self, WriteContext *tls, ConflictSet::Impl *impl,
|
||||||
Node *&dontInvalidate, Node3 *self3) {
|
Node *&dontInvalidate, Node3 *self3) {
|
||||||
|
assert(!self3->entryPresent);
|
||||||
auto *child = self3->children[0];
|
auto *child = self3->children[0];
|
||||||
int minCapacity = self3->partialKeyLen + 1 + child->partialKeyLen;
|
int minCapacity = self3->partialKeyLen + 1 + child->partialKeyLen;
|
||||||
|
|
||||||
@@ -1639,7 +1640,7 @@ void mergeWithChild(Node *&self, WriteContext *tls, ConflictSet::Impl *impl,
|
|||||||
// that we have a new parent.
|
// that we have a new parent.
|
||||||
setMaxVersion(child, impl, std::max(childMaxVersion, tls->zero));
|
setMaxVersion(child, impl, std::max(childMaxVersion, tls->zero));
|
||||||
|
|
||||||
getInTree(self, impl) = child;
|
self = child;
|
||||||
tls->release(self3);
|
tls->release(self3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1662,7 +1663,7 @@ void maybeDownsize(Node *self, WriteContext *tls, ConflictSet::Impl *impl,
|
|||||||
getInTree(self, impl) = newSelf;
|
getInTree(self, impl) = newSelf;
|
||||||
tls->release(self3);
|
tls->release(self3);
|
||||||
} else if (self->numChildren == 1 && !self->entryPresent) {
|
} else if (self->numChildren == 1 && !self->entryPresent) {
|
||||||
mergeWithChild(self, tls, impl, dontInvalidate, self3);
|
mergeWithChild(getInTree(self, impl), tls, impl, dontInvalidate, self3);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Type_Node16:
|
case Type_Node16:
|
||||||
|
Reference in New Issue
Block a user