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`.
|
||||
func (t transientStorage) Set(addr common.Address, key, value common.Hash) {
|
||||
storage, ok := t[addr]
|
||||
if value == (common.Hash{}) { // this is a 'delete'
|
||||
if _, ok := t[addr]; ok {
|
||||
delete(t[addr], key)
|
||||
if len(t[addr]) == 0 {
|
||||
if ok {
|
||||
delete(storage, key)
|
||||
if len(storage) == 0 {
|
||||
delete(t, addr)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if _, ok := t[addr]; !ok {
|
||||
t[addr] = make(Storage)
|
||||
if !ok {
|
||||
storage = make(Storage)
|
||||
t[addr] = storage
|
||||
}
|
||||
t[addr][key] = value
|
||||
storage[key] = value
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue