trie: dirty tracking
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user