|
|
|
@ -128,13 +128,13 @@ func runCmd(ctx *cli.Context) error { |
|
|
|
|
if ctx.GlobalString(CodeFileFlag.Name) == "-" { |
|
|
|
|
//Try reading from stdin
|
|
|
|
|
if hexcode, err = ioutil.ReadAll(os.Stdin); err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "Could not load code from stdin: %v\n", err) |
|
|
|
|
fmt.Printf("Could not load code from stdin: %v\n", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// Codefile with hex assembly
|
|
|
|
|
if hexcode, err = ioutil.ReadFile(ctx.GlobalString(CodeFileFlag.Name)); err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "Could not load code from file: %v\n", err) |
|
|
|
|
fmt.Printf("Could not load code from file: %v\n", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -172,11 +172,11 @@ func runCmd(ctx *cli.Context) error { |
|
|
|
|
if cpuProfilePath := ctx.GlobalString(CPUProfileFlag.Name); cpuProfilePath != "" { |
|
|
|
|
f, err := os.Create(cpuProfilePath) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "could not create CPU profile: %v\n", err) |
|
|
|
|
fmt.Println("could not create CPU profile: ", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
if err := pprof.StartCPUProfile(f); err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "could not start CPU profile: %v\n", err) |
|
|
|
|
fmt.Println("could not start CPU profile: ", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
defer pprof.StopCPUProfile() |
|
|
|
@ -200,17 +200,17 @@ func runCmd(ctx *cli.Context) error { |
|
|
|
|
|
|
|
|
|
if ctx.GlobalBool(DumpFlag.Name) { |
|
|
|
|
statedb.IntermediateRoot(true) |
|
|
|
|
fmt.Fprintln(ctx.App.Writer, string(statedb.Dump())) |
|
|
|
|
fmt.Println(string(statedb.Dump())) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if memProfilePath := ctx.GlobalString(MemProfileFlag.Name); memProfilePath != "" { |
|
|
|
|
f, err := os.Create(memProfilePath) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "could not create memory profile: %v\n", err) |
|
|
|
|
fmt.Println("could not create memory profile: ", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
if err := pprof.WriteHeapProfile(f); err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, "could not create memory profile: %v\n", err) |
|
|
|
|
fmt.Println("could not write memory profile: ", err) |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
f.Close() |
|
|
|
@ -218,17 +218,17 @@ func runCmd(ctx *cli.Context) error { |
|
|
|
|
|
|
|
|
|
if ctx.GlobalBool(DebugFlag.Name) { |
|
|
|
|
if debugLogger != nil { |
|
|
|
|
fmt.Fprintln(ctx.App.ErrWriter, "#### TRACE ####") |
|
|
|
|
vm.WriteTrace(ctx.App.ErrWriter, debugLogger.StructLogs()) |
|
|
|
|
fmt.Fprintln(os.Stderr, "#### TRACE ####") |
|
|
|
|
vm.WriteTrace(os.Stderr, debugLogger.StructLogs()) |
|
|
|
|
} |
|
|
|
|
fmt.Fprintln(ctx.App.ErrWriter, "#### LOGS ####") |
|
|
|
|
vm.WriteLogs(ctx.App.ErrWriter, statedb.Logs()) |
|
|
|
|
fmt.Fprintln(os.Stderr, "#### LOGS ####") |
|
|
|
|
vm.WriteLogs(os.Stderr, statedb.Logs()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ctx.GlobalBool(StatDumpFlag.Name) { |
|
|
|
|
var mem goruntime.MemStats |
|
|
|
|
goruntime.ReadMemStats(&mem) |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, `evm execution time: %v |
|
|
|
|
fmt.Fprintf(os.Stderr, `evm execution time: %v |
|
|
|
|
heap objects: %d |
|
|
|
|
allocations: %d |
|
|
|
|
total allocations: %d |
|
|
|
@ -238,9 +238,9 @@ Gas used: %d |
|
|
|
|
`, execTime, mem.HeapObjects, mem.Alloc, mem.TotalAlloc, mem.NumGC, initialGas-leftOverGas) |
|
|
|
|
} |
|
|
|
|
if tracer == nil { |
|
|
|
|
fmt.Fprintf(ctx.App.Writer, "0x%x\n", ret) |
|
|
|
|
fmt.Printf("0x%x\n", ret) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Fprintf(ctx.App.ErrWriter, " error: %v\n", err) |
|
|
|
|
fmt.Printf(" error: %v\n", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|