diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-22 15:06:43 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-22 15:06:43 +0000 |
commit | 7d8ffffc995684b9dcadea191954bebdd897e264 (patch) | |
tree | 7e2c25cfb3a27564a6461ba105f610c29c02cb89 /vespalib/src | |
parent | e958dd0795d498ba7b39fc166eaf228b8713dadd (diff) |
Use explicit invalidation instead of passing nullptr.
Diffstat (limited to 'vespalib/src')
-rw-r--r-- | vespalib/src/vespa/vespalib/btree/btreeiterator.h | 1 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/btree/btreeiterator.hpp | 24 |
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> |