mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-28 07:36:44 +00:00
Do not record GasChangeCallLeftOverReturned gas change if there is no gas to return
This commit is contained in:
parent
2ff2423e28
commit
469ccbe765
1 changed files with 21 additions and 7 deletions
|
|
@ -180,7 +180,9 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
|
|||
evm.Config.Tracer.CaptureStart(caller.Address(), addr, false, input, gas, value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) { // Lazy evaluation of the parameters
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureEnd(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
} else {
|
||||
|
|
@ -188,7 +190,9 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
|
|||
evm.Config.Tracer.CaptureEnter(CALL, caller.Address(), addr, input, gas, value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureExit(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
}
|
||||
|
|
@ -263,7 +267,9 @@ func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte,
|
|||
evm.Config.Tracer.CaptureEnter(CALLCODE, caller.Address(), addr, input, gas, value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureExit(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
}
|
||||
|
|
@ -320,7 +326,9 @@ func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []by
|
|||
evm.Config.Tracer.CaptureEnter(DELEGATECALL, caller.Address(), addr, input, gas, parent.value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureExit(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
}
|
||||
|
|
@ -364,7 +372,9 @@ func (evm *EVM) StaticCall(caller ContractRef, addr common.Address, input []byte
|
|||
evm.Config.Tracer.CaptureEnter(STATICCALL, caller.Address(), addr, input, gas, nil)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureExit(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
}
|
||||
|
|
@ -434,14 +444,18 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64,
|
|||
evm.Config.Tracer.CaptureStart(caller.Address(), address, true, codeAndHash.code, gas, value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureEnd(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
} else {
|
||||
evm.Config.Tracer.CaptureEnter(typ, caller.Address(), address, codeAndHash.code, gas, value)
|
||||
evm.Config.Tracer.OnGasChange(0, gas, GasChangeCallInitialBalance)
|
||||
defer func(startGas uint64) {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
if leftOverGas != 0 {
|
||||
evm.Config.Tracer.OnGasChange(leftOverGas, 0, GasChangeCallLeftOverReturned)
|
||||
}
|
||||
evm.Config.Tracer.CaptureExit(ret, startGas-leftOverGas, err)
|
||||
}(gas)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue