Skip to content

Commit

Permalink
trie: improve comment
Browse files Browse the repository at this point in the history
  • Loading branch information
rjl493456442 committed Dec 12, 2023
1 parent eb8f7ac commit bbc0c64
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions trie/iterator.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ type nodeIterator struct {
err error // Failure set in case of an internal error in the iterator

resolver NodeResolver // optional node resolver for avoiding disk hits
pool []*nodeIteratorState // local pool for iteratorstates
pool []*nodeIteratorState // local pool for iterator states
}

// errIteratorEnd is stored in nodeIterator.err when iteration is done.
Expand Down Expand Up @@ -550,26 +550,28 @@ func (it *nodeIterator) pop() {
it.path = it.path[:last.pathlen]
it.stack[len(it.stack)-1] = nil
it.stack = it.stack[:len(it.stack)-1]
// last is now unused
it.putInPool(last)

it.putInPool(last) // last is now unused
}

// reachedPath normalizes a path by truncating a terminator if present, and returns true if it is
// greater than or equal to the target. Using this, the path of a value node embedded a full node
// will compare less than the full node's children.
// reachedPath normalizes a path by truncating a terminator if present, and
// returns true if it is greater than or equal to the target. Using this,
// the path of a value node embedded a full node will compare less than the
// full node's children.
func reachedPath(path, target []byte) bool {
if hasTerm(path) {
path = path[:len(path)-1]
}
return bytes.Compare(path, target) >= 0
}

// A value embedded in a full node occupies the last slot (16) of the array of children. In order to
// produce a pre-order traversal when iterating children, we jump to this last slot first, then go
// back iterate the child nodes (and skip the last slot at the end):
// A value embedded in a full node occupies the last slot (16) of the array of
// children. In order to produce a pre-order traversal when iterating children,
// we jump to this last slot first, then go back iterate the child nodes (and
// skip the last slot at the end):

// prevChildIndex returns the index of a child in a full node which precedes the given index when
// performing a pre-order traversal.
// prevChildIndex returns the index of a child in a full node which precedes
// the given index when performing a pre-order traversal.
func prevChildIndex(index int) int {
switch index {
case 0: // We jumped back to iterate the children, from the value slot
Expand All @@ -583,8 +585,8 @@ func prevChildIndex(index int) int {
}
}

// nextChildIndex returns the index of a child in a full node which follows the given index when
// performing a pre-order traversal.
// nextChildIndex returns the index of a child in a full node which follows
// the given index when performing a pre-order traversal.
func nextChildIndex(index int) int {
switch index {
case -1: // Jump from the placeholder index to the embedded value slot
Expand Down

0 comments on commit bbc0c64

Please sign in to comment.