Skip to content

Commit 18971d9

Browse files
committed
[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 3c836dd)
1 parent 74d5251 commit 18971d9

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

core/state/state_object.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,13 @@ func (self *StateObject) GetState(db trie.Database, key common.Hash) common.Hash
153153
return value
154154
}
155155
// Load from DB in case it is missing.
156-
tr := self.getTrie(db)
157-
var ret []byte
158-
rlp.DecodeBytes(tr.Get(key[:]), &ret)
159-
value = common.BytesToHash(ret)
156+
if enc := self.getTrie(db).Get(key[:]); len(enc) > 0 {
157+
_, content, _, err := rlp.Split(enc)
158+
if err != nil {
159+
self.setError(err)
160+
}
161+
value.SetBytes(content)
162+
}
160163
if (value != common.Hash{}) {
161164
self.cachedStorage[key] = value
162165
}
@@ -209,7 +212,6 @@ func (self *StateObject) updateRoot(db trie.Database) {
209212
func (self *StateObject) CommitTrie(db trie.Database, dbw trie.DatabaseWriter) error {
210213
self.updateTrie(db)
211214
if self.dbErr != nil {
212-
fmt.Println("dbErr:", self.dbErr)
213215
return self.dbErr
214216
}
215217
root, err := self.trie.CommitTo(dbw)

0 commit comments

Comments
 (0)