cmd/evm, core/vm: add --nomemory, --nostack to evm (#14617)

This commit is contained in:
Martin Holst Swende
2017-06-21 14:52:31 +02:00
committed by Felix Lange
parent 9012863ad7
commit 9a44e1035e
5 changed files with 68 additions and 47 deletions

View File

@ -28,25 +28,32 @@ import (
type JSONLogger struct {
encoder *json.Encoder
cfg *vm.LogConfig
}
func NewJSONLogger(writer io.Writer) *JSONLogger {
return &JSONLogger{json.NewEncoder(writer)}
func NewJSONLogger(cfg *vm.LogConfig, writer io.Writer) *JSONLogger {
return &JSONLogger{json.NewEncoder(writer), cfg}
}
// CaptureState outputs state information on the logger.
func (l *JSONLogger) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) error {
return l.encoder.Encode(vm.StructLog{
Pc: pc,
Op: op,
Gas: gas + cost,
GasCost: cost,
Memory: memory.Data(),
Stack: stack.Data(),
Storage: nil,
Depth: depth,
Err: err,
})
log := vm.StructLog{
Pc: pc,
Op: op,
Gas: gas + cost,
GasCost: cost,
MemorySize: memory.Len(),
Storage: nil,
Depth: depth,
Err: err,
}
if !l.cfg.DisableMemory {
log.Memory = memory.Data()
}
if !l.cfg.DisableStack {
log.Stack = stack.Data()
}
return l.encoder.Encode(log)
}
// CaptureEnd is triggered at end of execution.