trie/bintrie: use type alias for HashedNode

Replace the single-field struct with a type alias on common.Hash.
Both have identical layout (32 bytes, no pointers) and noscan span
placement, but the alias matches master's style and reads more
naturally. A zero-arg Hash() method keeps call sites terse.
This commit is contained in:
CPerezz 2026-04-17 10:31:03 +02:00
parent 5f94d26db8
commit 84c61897b3
No known key found for this signature in database
GPG key ID: 62045F34B97177DD
5 changed files with 22 additions and 21 deletions

View file

@ -18,7 +18,8 @@ package bintrie
import "github.com/ethereum/go-ethereum/common"
// HashedNode is an unresolved node (hash only).
type HashedNode struct {
hash common.Hash
}
// HashedNode is an unresolved node — only its hash is known.
type HashedNode common.Hash
// Hash returns the node's hash.
func (h HashedNode) Hash() common.Hash { return common.Hash(h) }

View file

@ -126,12 +126,12 @@ func (it *binaryNodeIterator) Next(descend bool) bool {
return false
}
hn := it.store.getHashed(it.current.Index())
data, err := it.trie.nodeResolver(it.Path(), hn.hash)
data, err := it.trie.nodeResolver(it.Path(), hn.Hash())
if err != nil {
it.lastErr = err
return false
}
resolved, err := it.store.DeserializeNodeWithHash(data, len(it.stack)-1, hn.hash)
resolved, err := it.store.DeserializeNodeWithHash(data, len(it.stack)-1, hn.Hash())
if err != nil {
it.lastErr = err
return false

View file

@ -151,7 +151,7 @@ func (s *NodeStore) freeHashedNode(idx uint32) {
func (s *NodeStore) newHashedRef(hash common.Hash) NodeRef {
idx := s.allocHashed()
*s.getHashed(idx) = HashedNode{hash: hash}
*s.getHashed(idx) = HashedNode(hash)
return MakeRef(KindHashed, idx)
}

View file

@ -38,7 +38,7 @@ func (s *NodeStore) ComputeHash(ref NodeRef) common.Hash {
case KindStem:
return s.getStem(ref.Index()).Hash()
case KindHashed:
return s.getHashed(ref.Index()).hash
return s.getHashed(ref.Index()).Hash()
case KindEmpty:
return common.Hash{}
default:
@ -259,7 +259,7 @@ func (s *NodeStore) ToDot(ref NodeRef, parent, path string) string {
case KindHashed:
hn := s.getHashed(ref.Index())
me := fmt.Sprintf("hash%s", path)
ret := fmt.Sprintf("%s [label=\"%x\"]\n", me, hn.hash)
ret := fmt.Sprintf("%s [label=\"%x\"]\n", me, hn.Hash())
ret = fmt.Sprintf("%s %s -> %s\n", ret, parent, me)
return ret
default:

View file

@ -72,11 +72,11 @@ func (s *NodeStore) getSingle(ref NodeRef, stem []byte, suffix byte, resolver No
hn := s.getHashed(cur.Index())
parentNode := s.getInternal(parentIdx)
path := makeKeyPath(int(parentNode.depth), stem)
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return nil, fmt.Errorf("getSingle resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash())
if err != nil {
return nil, fmt.Errorf("getSingle deserialization error: %w", err)
}
@ -143,11 +143,11 @@ func (s *NodeStore) getValuesAtStem(ref NodeRef, stem []byte, resolver NodeResol
hn := s.getHashed(cur.Index())
parentNode := s.getInternal(parentIdx)
path := makeKeyPath(int(parentNode.depth), stem)
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return nil, fmt.Errorf("getValuesAtStem resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash())
if err != nil {
return nil, fmt.Errorf("getValuesAtStem deserialization error: %w", err)
}
@ -251,11 +251,11 @@ func (s *NodeStore) insertSingleInternal(stem []byte, suffix byte, value []byte,
parentNode := s.getInternal(p.internalIdx)
hn := s.getHashed(cur.Index())
path := makeKeyPath(int(parentNode.depth), stem)
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return fmt.Errorf("insertSingle resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash())
if err != nil {
return fmt.Errorf("insertSingle deserialization error: %w", err)
}
@ -370,11 +370,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte
}
hn := s.getHashed(node.left.Index())
path := makeKeyPath(int(node.depth), stem)
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
}
@ -393,11 +393,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte
}
hn := s.getHashed(node.right.Index())
path := makeKeyPath(int(node.depth), stem)
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
}
@ -437,11 +437,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte
if resolver == nil {
return ref, errors.New("InsertValuesAtStem: resolver is nil")
}
data, err := resolver(path, hn.hash)
data, err := resolver(path, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
}
resolved, err := s.DeserializeNodeWithHash(data, depth, hn.hash)
resolved, err := s.DeserializeNodeWithHash(data, depth, hn.Hash())
if err != nil {
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
}