mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
interpreter: make tracing count constant+dynamic gas
This commit is contained in:
parent
34fd5ca4f4
commit
326b20e123
1 changed files with 5 additions and 2 deletions
|
|
@ -211,6 +211,7 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Static portion of gas
|
// Static portion of gas
|
||||||
|
cost = operation.constantGas // For tracing
|
||||||
if !contract.UseGas(operation.constantGas) {
|
if !contract.UseGas(operation.constantGas) {
|
||||||
return nil, ErrOutOfGas
|
return nil, ErrOutOfGas
|
||||||
}
|
}
|
||||||
|
|
@ -235,8 +236,10 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) (
|
||||||
// consume the gas and return an error if not enough gas is available.
|
// consume the gas and return an error if not enough gas is available.
|
||||||
// cost is explicitly set so that the capture state defer method can get the proper cost
|
// cost is explicitly set so that the capture state defer method can get the proper cost
|
||||||
if operation.dynamicGas != nil {
|
if operation.dynamicGas != nil {
|
||||||
cost, err = operation.dynamicGas(in.evm, contract, stack, mem, memorySize)
|
var dynamicCost uint64
|
||||||
if err != nil || !contract.UseGas(cost) {
|
dynamicCost, err = operation.dynamicGas(in.evm, contract, stack, mem, memorySize)
|
||||||
|
cost += dynamicCost // total cost, for debug tracing
|
||||||
|
if err != nil || !contract.UseGas(dynamicCost) {
|
||||||
return nil, ErrOutOfGas
|
return nil, ErrOutOfGas
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue