diff options
author | Martin Holst Swende <martin@swende.se> | 2017-06-21 20:52:31 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-06-21 20:52:31 +0800 |
commit | 9a44e1035ed72eec121cf6fbe38761eea20e09c6 (patch) | |
tree | 17f5dbc5267d47bc88126bf23776c4a0b42fc348 /cmd/evm/json_logger.go | |
parent | 9012863ad78bca17f768b83324be8a26ddb34657 (diff) | |
download | go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar.gz go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar.bz2 go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar.lz go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar.xz go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.tar.zst go-tangerine-9a44e1035ed72eec121cf6fbe38761eea20e09c6.zip |
cmd/evm, core/vm: add --nomemory, --nostack to evm (#14617)
Diffstat (limited to 'cmd/evm/json_logger.go')
-rw-r--r-- | cmd/evm/json_logger.go | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/cmd/evm/json_logger.go b/cmd/evm/json_logger.go index a84d5daeb..d61981062 100644 --- a/cmd/evm/json_logger.go +++ b/cmd/evm/json_logger.go @@ -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. |