mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 05:11:37 +00:00
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:
parent
5f94d26db8
commit
84c61897b3
5 changed files with 22 additions and 21 deletions
|
|
@ -18,7 +18,8 @@ package bintrie
|
||||||
|
|
||||||
import "github.com/ethereum/go-ethereum/common"
|
import "github.com/ethereum/go-ethereum/common"
|
||||||
|
|
||||||
// HashedNode is an unresolved node (hash only).
|
// HashedNode is an unresolved node — only its hash is known.
|
||||||
type HashedNode struct {
|
type HashedNode common.Hash
|
||||||
hash common.Hash
|
|
||||||
}
|
// Hash returns the node's hash.
|
||||||
|
func (h HashedNode) Hash() common.Hash { return common.Hash(h) }
|
||||||
|
|
|
||||||
|
|
@ -126,12 +126,12 @@ func (it *binaryNodeIterator) Next(descend bool) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
hn := it.store.getHashed(it.current.Index())
|
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 {
|
if err != nil {
|
||||||
it.lastErr = err
|
it.lastErr = err
|
||||||
return false
|
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 {
|
if err != nil {
|
||||||
it.lastErr = err
|
it.lastErr = err
|
||||||
return false
|
return false
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ func (s *NodeStore) freeHashedNode(idx uint32) {
|
||||||
|
|
||||||
func (s *NodeStore) newHashedRef(hash common.Hash) NodeRef {
|
func (s *NodeStore) newHashedRef(hash common.Hash) NodeRef {
|
||||||
idx := s.allocHashed()
|
idx := s.allocHashed()
|
||||||
*s.getHashed(idx) = HashedNode{hash: hash}
|
*s.getHashed(idx) = HashedNode(hash)
|
||||||
return MakeRef(KindHashed, idx)
|
return MakeRef(KindHashed, idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ func (s *NodeStore) ComputeHash(ref NodeRef) common.Hash {
|
||||||
case KindStem:
|
case KindStem:
|
||||||
return s.getStem(ref.Index()).Hash()
|
return s.getStem(ref.Index()).Hash()
|
||||||
case KindHashed:
|
case KindHashed:
|
||||||
return s.getHashed(ref.Index()).hash
|
return s.getHashed(ref.Index()).Hash()
|
||||||
case KindEmpty:
|
case KindEmpty:
|
||||||
return common.Hash{}
|
return common.Hash{}
|
||||||
default:
|
default:
|
||||||
|
|
@ -259,7 +259,7 @@ func (s *NodeStore) ToDot(ref NodeRef, parent, path string) string {
|
||||||
case KindHashed:
|
case KindHashed:
|
||||||
hn := s.getHashed(ref.Index())
|
hn := s.getHashed(ref.Index())
|
||||||
me := fmt.Sprintf("hash%s", path)
|
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)
|
ret = fmt.Sprintf("%s %s -> %s\n", ret, parent, me)
|
||||||
return ret
|
return ret
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -72,11 +72,11 @@ func (s *NodeStore) getSingle(ref NodeRef, stem []byte, suffix byte, resolver No
|
||||||
hn := s.getHashed(cur.Index())
|
hn := s.getHashed(cur.Index())
|
||||||
parentNode := s.getInternal(parentIdx)
|
parentNode := s.getInternal(parentIdx)
|
||||||
path := makeKeyPath(int(parentNode.depth), stem)
|
path := makeKeyPath(int(parentNode.depth), stem)
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getSingle resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getSingle deserialization error: %w", err)
|
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())
|
hn := s.getHashed(cur.Index())
|
||||||
parentNode := s.getInternal(parentIdx)
|
parentNode := s.getInternal(parentIdx)
|
||||||
path := makeKeyPath(int(parentNode.depth), stem)
|
path := makeKeyPath(int(parentNode.depth), stem)
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getValuesAtStem resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getValuesAtStem deserialization error: %w", err)
|
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)
|
parentNode := s.getInternal(p.internalIdx)
|
||||||
hn := s.getHashed(cur.Index())
|
hn := s.getHashed(cur.Index())
|
||||||
path := makeKeyPath(int(parentNode.depth), stem)
|
path := makeKeyPath(int(parentNode.depth), stem)
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("insertSingle resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("insertSingle deserialization error: %w", err)
|
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())
|
hn := s.getHashed(node.left.Index())
|
||||||
path := makeKeyPath(int(node.depth), stem)
|
path := makeKeyPath(int(node.depth), stem)
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
|
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())
|
hn := s.getHashed(node.right.Index())
|
||||||
path := makeKeyPath(int(node.depth), stem)
|
path := makeKeyPath(int(node.depth), stem)
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
|
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 {
|
if resolver == nil {
|
||||||
return ref, errors.New("InsertValuesAtStem: resolver is nil")
|
return ref, errors.New("InsertValuesAtStem: resolver is nil")
|
||||||
}
|
}
|
||||||
data, err := resolver(path, hn.hash)
|
data, err := resolver(path, hn.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
|
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 {
|
if err != nil {
|
||||||
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
|
return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue