mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
Revert "core/state: mark account as dirty when resetObject occurs (#27339)"
This reverts commit 68dea627c4.
This commit is contained in:
parent
5311e47079
commit
a396bf8ace
2 changed files with 10 additions and 7 deletions
|
|
@ -90,7 +90,6 @@ type (
|
||||||
account *common.Address
|
account *common.Address
|
||||||
}
|
}
|
||||||
resetObjectChange struct {
|
resetObjectChange struct {
|
||||||
account *common.Address
|
|
||||||
prev *stateObject
|
prev *stateObject
|
||||||
prevdestruct bool
|
prevdestruct bool
|
||||||
}
|
}
|
||||||
|
|
@ -163,7 +162,7 @@ func (ch resetObjectChange) revert(s *StateDB) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch resetObjectChange) dirtied() *common.Address {
|
func (ch resetObjectChange) dirtied() *common.Address {
|
||||||
return ch.account
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch suicideChange) revert(s *StateDB) {
|
func (ch suicideChange) revert(s *StateDB) {
|
||||||
|
|
|
||||||
|
|
@ -623,15 +623,19 @@ func (s *StateDB) GetOrNewStateObject(addr common.Address) *stateObject {
|
||||||
// the given address, it is overwritten and returned as the second return value.
|
// the given address, it is overwritten and returned as the second return value.
|
||||||
func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) {
|
func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) {
|
||||||
prev = s.getDeletedStateObject(addr) // Note, prev might have been deleted, we need that!
|
prev = s.getDeletedStateObject(addr) // Note, prev might have been deleted, we need that!
|
||||||
|
|
||||||
|
var prevdestruct bool
|
||||||
|
if prev != nil {
|
||||||
|
_, prevdestruct = s.stateObjectsDestruct[prev.address]
|
||||||
|
if !prevdestruct {
|
||||||
|
s.stateObjectsDestruct[prev.address] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
newobj = newObject(s, addr, types.StateAccount{})
|
newobj = newObject(s, addr, types.StateAccount{})
|
||||||
if prev == nil {
|
if prev == nil {
|
||||||
s.journal.append(createObjectChange{account: &addr})
|
s.journal.append(createObjectChange{account: &addr})
|
||||||
} else {
|
} else {
|
||||||
_, prevdestruct := s.stateObjectsDestruct[prev.address]
|
s.journal.append(resetObjectChange{prev: prev, prevdestruct: prevdestruct})
|
||||||
if !prevdestruct {
|
|
||||||
s.stateObjectsDestruct[prev.address] = struct{}{}
|
|
||||||
}
|
|
||||||
s.journal.append(resetObjectChange{account: &addr, prev: prev, prevdestruct: prevdestruct})
|
|
||||||
}
|
}
|
||||||
s.setStateObject(newobj)
|
s.setStateObject(newobj)
|
||||||
if prev != nil && !prev.deleted {
|
if prev != nil && !prev.deleted {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue