aboutsummaryrefslogtreecommitdiffstats
path: root/trie/sync.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-05-31 05:07:51 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2016-05-31 05:07:51 +0800
commit5c39a1bb26813d05244a5408b20fb0b38c10c8b2 (patch)
treeaf9ebf86f6f863f9b23c502cb1699c604938fcd6 /trie/sync.go
parentab664c7e17009729d1083d8d4f7c37eb387012d3 (diff)
parent748d1c171d74fbf6b6051fd629d3c2204dd930e3 (diff)
downloaddexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar.gz
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar.bz2
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar.lz
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar.xz
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.tar.zst
dexon-5c39a1bb26813d05244a5408b20fb0b38c10c8b2.zip
Merge pull request #2585 from karalabe/trie-dirty-tracking
core, core/state, trie: enterprise hand-tuned multi-level caching
Diffstat (limited to 'trie/sync.go')
-rw-r--r--trie/sync.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/trie/sync.go b/trie/sync.go
index d55399d06..a35478f83 100644
--- a/trie/sync.go
+++ b/trie/sync.go
@@ -75,8 +75,9 @@ func (s *TrieSync) AddSubTrie(root common.Hash, depth int, parent common.Hash, c
if root == emptyRoot {
return
}
- blob, _ := s.database.Get(root.Bytes())
- if local, err := decodeNode(blob); local != nil && err == nil {
+ key := root.Bytes()
+ blob, _ := s.database.Get(key)
+ if local, err := decodeNode(key, blob); local != nil && err == nil {
return
}
// Assemble the new sub-trie sync request
@@ -152,7 +153,7 @@ func (s *TrieSync) Process(results []SyncResult) (int, error) {
continue
}
// Decode the node data content and update the request
- node, err := decodeNode(item.Data)
+ node, err := decodeNode(item.Hash[:], item.Data)
if err != nil {
return i, err
}
@@ -213,9 +214,9 @@ func (s *TrieSync) children(req *request) ([]*request, error) {
}}
case fullNode:
for i := 0; i < 17; i++ {
- if node[i] != nil {
+ if node.Children[i] != nil {
children = append(children, child{
- node: &node[i],
+ node: &node.Children[i],
depth: req.depth + 1,
})
}
@@ -238,7 +239,7 @@ func (s *TrieSync) children(req *request) ([]*request, error) {
if node, ok := (*child.node).(hashNode); ok {
// Try to resolve the node from the local database
blob, _ := s.database.Get(node)
- if local, err := decodeNode(blob); local != nil && err == nil {
+ if local, err := decodeNode(node[:], blob); local != nil && err == nil {
*child.node = local
continue
}