mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-21 20:26:41 +00:00
core/state: optimize Set
This commit is contained in:
parent
eaaa5b716d
commit
9c287db442
1 changed files with 8 additions and 6 deletions
|
|
@ -35,18 +35,20 @@ func newTransientStorage() transientStorage {
|
||||||
|
|
||||||
// Set sets the transient-storage `value` for `key` at the given `addr`.
|
// Set sets the transient-storage `value` for `key` at the given `addr`.
|
||||||
func (t transientStorage) Set(addr common.Address, key, value common.Hash) {
|
func (t transientStorage) Set(addr common.Address, key, value common.Hash) {
|
||||||
|
storage, ok := t[addr]
|
||||||
if value == (common.Hash{}) { // this is a 'delete'
|
if value == (common.Hash{}) { // this is a 'delete'
|
||||||
if _, ok := t[addr]; ok {
|
if ok {
|
||||||
delete(t[addr], key)
|
delete(storage, key)
|
||||||
if len(t[addr]) == 0 {
|
if len(storage) == 0 {
|
||||||
delete(t, addr)
|
delete(t, addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if _, ok := t[addr]; !ok {
|
if !ok {
|
||||||
t[addr] = make(Storage)
|
storage = make(Storage)
|
||||||
|
t[addr] = storage
|
||||||
}
|
}
|
||||||
t[addr][key] = value
|
storage[key] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue