aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm
diff options
context:
space:
mode:
authorFelix Lange <fjl@users.noreply.github.com>2017-07-19 20:32:45 +0800
committerGitHub <noreply@github.com>2017-07-19 20:32:45 +0800
commit3e0dbe0eaa723580a86a6a2f18ab744387d4235e (patch)
tree73b59c17c2c69be82c1af8ea5399706e0fcd993e /core/vm
parent1802682f65655a69cb17c21113100bac16539192 (diff)
downloadgo-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar.gz
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar.bz2
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar.lz
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar.xz
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.tar.zst
go-tangerine-3e0dbe0eaa723580a86a6a2f18ab744387d4235e.zip
core/vm: remove logging and add section labels to struct logs (#14782)
Diffstat (limited to 'core/vm')
-rw-r--r--core/vm/contracts.go3
-rw-r--r--core/vm/interpreter.go11
-rw-r--r--core/vm/logger.go25
3 files changed, 16 insertions, 23 deletions
diff --git a/core/vm/contracts.go b/core/vm/contracts.go
index 90b2f913e..43b60ba77 100644
--- a/core/vm/contracts.go
+++ b/core/vm/contracts.go
@@ -23,7 +23,6 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"golang.org/x/crypto/ripemd160"
)
@@ -76,14 +75,12 @@ func (c *ecrecover) Run(in []byte) ([]byte, error) {
// tighter sig s values in homestead only apply to tx sigs
if !allZero(in[32:63]) || !crypto.ValidateSignatureValues(v, r, s, false) {
- log.Trace("ECRECOVER error: v, r or s value invalid")
return nil, nil
}
// v needs to be at the end for libsecp256k1
pubKey, err := crypto.Ecrecover(in[:32], append(in[64:128], v))
// make sure the public key is a valid one
if err != nil {
- log.Trace("ECRECOVER failed", "err", err)
return nil, nil
}
diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go
index 545f7d650..0a225bca4 100644
--- a/core/vm/interpreter.go
+++ b/core/vm/interpreter.go
@@ -19,12 +19,10 @@ package vm
import (
"fmt"
"sync/atomic"
- "time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
)
@@ -122,19 +120,12 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret
)
contract.Input = input
- // User defer pattern to check for an error and, based on the error being nil or not, use all gas and return.
defer func() {
if err != nil && in.cfg.Debug {
- // XXX For debugging
- //fmt.Printf("%04d: %8v cost = %-8d stack = %-8d ERR = %v\n", pc, op, cost, stack.len(), err)
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
}
}()
- log.Debug("interpreter running contract", "hash", codehash[:])
- tstart := time.Now()
- defer log.Debug("interpreter finished running contract", "hash", codehash[:], "elapsed", time.Since(tstart))
-
// The Interpreter main run loop (contextual). This loop runs until either an
// explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during
// the execution of one of the operations or until the done flag is set by the
@@ -190,8 +181,6 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret
if in.cfg.Debug {
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
}
- // XXX For debugging
- //fmt.Printf("%04d: %8v cost = %-8d stack = %-8d\n", pc, op, cost, stack.len())
// execute the operation
res, err := operation.execute(&pc, in.evm, contract, mem, stack)
diff --git a/core/vm/logger.go b/core/vm/logger.go
index 17a9c9ec3..b73b13bd9 100644
--- a/core/vm/logger.go
+++ b/core/vm/logger.go
@@ -196,20 +196,27 @@ func (l *StructLogger) StructLogs() []StructLog {
// WriteTrace writes a formatted trace to the given writer
func WriteTrace(writer io.Writer, logs []StructLog) {
for _, log := range logs {
- fmt.Fprintf(writer, "%-10spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost)
+ fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost)
if log.Err != nil {
fmt.Fprintf(writer, " ERROR: %v", log.Err)
}
- fmt.Fprintf(writer, "\n")
+ fmt.Fprintln(writer)
- for i := len(log.Stack) - 1; i >= 0; i-- {
- fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32))
+ if len(log.Stack) > 0 {
+ fmt.Fprintln(writer, "Stack:")
+ for i := len(log.Stack) - 1; i >= 0; i-- {
+ fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32))
+ }
}
-
- fmt.Fprint(writer, hex.Dump(log.Memory))
-
- for h, item := range log.Storage {
- fmt.Fprintf(writer, "%x: %x\n", h, item)
+ if len(log.Memory) > 0 {
+ fmt.Fprintln(writer, "Memory:")
+ fmt.Fprint(writer, hex.Dump(log.Memory))
+ }
+ if len(log.Storage) > 0 {
+ fmt.Fprintln(writer, "Storage:")
+ for h, item := range log.Storage {
+ fmt.Fprintf(writer, "%x: %x\n", h, item)
+ }
}
fmt.Fprintln(writer)
}