aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2016-10-06 04:56:07 +0800
committerFelix Lange <fjl@twurst.com>2016-10-06 22:25:17 +0800
commit18971d9cb4b06412188a845a1cf87dcac76bd8b4 (patch)
treeb37f1476fcea59c9ce2b4a22361fe7b6fed849d7
parent74d5251b7003275f2cf1663b8ee7cb86ffe83cdd (diff)
downloadgo-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar.gz
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar.bz2
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar.lz
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar.xz
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.tar.zst
go-tangerine-18971d9cb4b06412188a845a1cf87dcac76bd8b4.zip
[release/1.4.16] core/state: optimize GetState
There is no need to use the reflection-based decoder to decode []byte. (cherry picked from commit 3c836dd71b192de24774b1848173a4eb0ca9a63b)
-rw-r--r--core/state/state_object.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/core/state/state_object.go b/core/state/state_object.go
index a6b6028bc..6eab27d9e 100644
--- a/core/state/state_object.go
+++ b/core/state/state_object.go
@@ -153,10 +153,13 @@ func (self *StateObject) GetState(db trie.Database, key common.Hash) common.Hash
return value
}
// Load from DB in case it is missing.
- tr := self.getTrie(db)
- var ret []byte
- rlp.DecodeBytes(tr.Get(key[:]), &ret)
- value = common.BytesToHash(ret)
+ if enc := self.getTrie(db).Get(key[:]); len(enc) > 0 {
+ _, content, _, err := rlp.Split(enc)
+ if err != nil {
+ self.setError(err)
+ }
+ value.SetBytes(content)
+ }
if (value != common.Hash{}) {
self.cachedStorage[key] = value
}
@@ -209,7 +212,6 @@ func (self *StateObject) updateRoot(db trie.Database) {
func (self *StateObject) CommitTrie(db trie.Database, dbw trie.DatabaseWriter) error {
self.updateTrie(db)
if self.dbErr != nil {
- fmt.Println("dbErr:", self.dbErr)
return self.dbErr
}
root, err := self.trie.CommitTo(dbw)