From 0a1ff68c11706f60355b392cb16a681630260ac3 Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Wed, 1 Jul 2015 15:38:32 +0200 Subject: trie: dirty tracking --- trie/fullnode.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'trie/fullnode.go') diff --git a/trie/fullnode.go b/trie/fullnode.go index 522fdb373..95c8eb4be 100644 --- a/trie/fullnode.go +++ b/trie/fullnode.go @@ -1,17 +1,16 @@ package trie -import "fmt" - type FullNode struct { trie *Trie nodes [17]Node + dirty bool } func NewFullNode(t *Trie) *FullNode { return &FullNode{trie: t} } -func (self *FullNode) Dirty() bool { return true } +func (self *FullNode) Dirty() bool { return self.dirty } func (self *FullNode) Value() Node { self.nodes[16] = self.trie.trans(self.nodes[16]) return self.nodes[16] @@ -27,6 +26,7 @@ func (self *FullNode) Copy(t *Trie) Node { nnode.nodes[i] = node.Copy(t) } } + nnode.dirty = true return nnode } @@ -60,11 +60,8 @@ func (self *FullNode) RlpData() interface{} { } func (self *FullNode) set(k byte, value Node) { - if _, ok := value.(*ValueNode); ok && k != 16 { - fmt.Println(value, k) - } - self.nodes[int(k)] = value + self.dirty = true } func (self *FullNode) branch(i byte) Node { @@ -75,3 +72,7 @@ func (self *FullNode) branch(i byte) Node { } return nil } + +func (self *FullNode) setDirty(dirty bool) { + self.dirty = dirty +} -- cgit v1.2.3 From 47460b3b4af51e08518c781680897cf2986415cc Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Thu, 2 Jul 2015 18:21:14 +0200 Subject: trie: removed shallow copies (thanks to @fjl) --- trie/fullnode.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'trie/fullnode.go') diff --git a/trie/fullnode.go b/trie/fullnode.go index 95c8eb4be..1bfdcd5bf 100644 --- a/trie/fullnode.go +++ b/trie/fullnode.go @@ -23,7 +23,7 @@ func (self *FullNode) Copy(t *Trie) Node { nnode := NewFullNode(t) for i, node := range self.nodes { if node != nil { - nnode.nodes[i] = node.Copy(t) + nnode.nodes[i] = node } } nnode.dirty = true -- cgit v1.2.3