aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-22 15:06:43 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-05-22 15:06:43 +0000
commit7d8ffffc995684b9dcadea191954bebdd897e264 (patch)
tree7e2c25cfb3a27564a6461ba105f610c29c02cb89 /vespalib/src
parente958dd0795d498ba7b39fc166eaf228b8713dadd (diff)
Use explicit invalidation instead of passing nullptr.
Diffstat (limited to 'vespalib/src')
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeiterator.h1
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeiterator.hpp24
2 files changed, 13 insertions, 12 deletions
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.h b/vespalib/src/vespa/vespalib/btree/btreeiterator.h
index 7a754880aa3..5e18eb0a5de 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeiterator.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.h
@@ -43,6 +43,7 @@ public:
NodeElement() : _node(nullptr), _idx(0u) { }
NodeElement(const NodeType *node, uint32_t idx) : _node(node), _idx(idx) { }
+ void invalidate() { _node = nullptr; _idx = 0; }
void setNode(const NodeType *node) { _node = node; }
const NodeType * getNode() const { return _node; }
void setIdx(uint32_t idx) { _idx = idx; }
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp b/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
index 8ecd26835c4..a94bac8a67e 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
@@ -57,7 +57,7 @@ clearPath(uint32_t pathSize)
uint32_t level = _pathSize;
while (level > pathSize) {
--level;
- _path[level].setNodeAndIdx(nullptr, 0u);
+ _path[level].invalidate();
}
_pathSize = pathSize;
}
@@ -87,7 +87,7 @@ void
BTreeIteratorBase<KeyT, DataT, AggrT, INTERNAL_SLOTS, LEAF_SLOTS, PATH_SIZE>::
setupEnd()
{
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
}
@@ -98,7 +98,7 @@ BTreeIteratorBase<KeyT, DataT, AggrT, INTERNAL_SLOTS, LEAF_SLOTS, PATH_SIZE>::
setupEmpty()
{
clearPath(0u);
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
_leafRoot = nullptr;
}
@@ -112,7 +112,7 @@ end()
if (_pathSize == 0) {
if (_leafRoot == nullptr)
return;
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
return;
}
uint32_t level = _pathSize - 1;
@@ -131,7 +131,7 @@ end()
assert(childRef.valid());
}
assert(_allocator->isLeafRef(childRef));
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
}
@@ -149,7 +149,7 @@ end(BTreeNode::Ref rootRef)
clearPath(0u);
const LeafNodeType *lnode = _allocator->mapLeafRef(rootRef);
_leafRoot = lnode;
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
return;
}
_leafRoot = nullptr;
@@ -171,7 +171,7 @@ end(BTreeNode::Ref rootRef)
childRef = inode->getChild(idx - 1);
assert(childRef.valid());
}
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
}
@@ -199,7 +199,7 @@ findNextLeafNode()
return;
}
}
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
}
@@ -558,7 +558,7 @@ lower_bound(const KeyType & key, CompareT comp)
return;
uint32_t idx = _leafRoot->template lower_bound<CompareT>(key, comp);
if (idx >= _leafRoot->validSlots()) {
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
} else {
_leaf.setNodeAndIdx(_leafRoot, idx);
}
@@ -608,7 +608,7 @@ lower_bound(BTreeNode::Ref rootRef, const KeyType & key, CompareT comp)
_leafRoot = lnode;
uint32_t idx = lnode->template lower_bound<CompareT>(key, comp);
if (idx >= lnode->validSlots()) {
- _leaf.setNodeAndIdx(nullptr, 0u);
+ _leaf.invalidate();
} else {
_leaf.setNodeAndIdx(lnode, idx);
}
@@ -1269,7 +1269,7 @@ removeLevel(BTreeNode::Ref rootRef, InternalNodeType *rootNode)
NodeAllocatorType &allocator(getAllocator());
allocator.holdNode(rootRef, rootNode);
--_pathSize;
- _path[_pathSize].setNodeAndIdx(nullptr, 0u);
+ _path[_pathSize].invalidate();
if (_pathSize == 0) {
_leafRoot = _leaf.getNode();
}
@@ -1286,7 +1286,7 @@ removeLast(BTreeNode::Ref rootRef)
NodeAllocatorType &allocator(getAllocator());
allocator.holdNode(rootRef, getLeafNode());
_leafRoot = nullptr;
- _leaf.setNode(nullptr);
+ _leaf.invalidate();
}
template <typename KeyT, typename DataT, typename AggrT, typename CompareT, typename TraitsT>