Skip to content

Commit 1ff10a0

Browse files
committed
trie/stacktrie: less rlp dancing
1 parent ede21cb commit 1ff10a0

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

trie/stacktrie.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -275,24 +275,23 @@ func (st *StackTrie) hash() []byte {
275275

276276
switch st.nodeType {
277277
case branchNode:
278-
fn := &fullNode{}
279-
for i, v := range st.children {
280-
if v != nil {
281-
// Write a 32 byte list to the sponge
282-
childhash := v.hash()
283-
if len(childhash) < 32 {
284-
fn.Children[i] = rawNode(childhash)
285-
286-
} else {
287-
fn.Children[i] = hashNode(childhash)
288-
}
289-
st.children[i] = nil // Reclaim mem from subtree
278+
var nodes [17]node
279+
for i, child := range st.children {
280+
if child == nil{
281+
nodes[i] = nilValueNode
282+
continue
283+
}
284+
if childhash := child.hash(); len(childhash) < 32 {
285+
nodes[i] = rawNode(childhash)
286+
}else{
287+
nodes[i]= hashNode(childhash)
290288
}
291289
}
290+
nodes[16] = nilValueNode
292291
h = newHasher(false)
293292
defer returnHasherToPool(h)
294293
h.tmp.Reset()
295-
if err := rlp.Encode(&h.tmp, fn); err != nil {
294+
if err := rlp.Encode(&h.tmp, nodes); err != nil {
296295
panic(err)
297296
}
298297
case extNode:

0 commit comments

Comments
 (0)