Skip to content

Commit

Permalink
cmd/evm: removed -sysstat and moved content to -debug flag
Browse files Browse the repository at this point in the history
Added the ability to directly compile and run ethereum assembly using
the evm utility: `evm run <file>`. This is equivalant to `evm compile
<file> | evm run`.
  • Loading branch information
obscuren committed Mar 1, 2017
1 parent bf41558 commit f30733c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
5 changes: 0 additions & 5 deletions cmd/evm/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,6 @@ var (
Name: "input",
Usage: "input for the EVM",
}
SysStatFlag = cli.BoolFlag{
Name: "sysstat",
Usage: "display system stats",
}
VerbosityFlag = cli.IntFlag{
Name: "verbosity",
Usage: "sets the verbosity level",
Expand All @@ -89,7 +85,6 @@ func init() {
CreateFlag,
DebugFlag,
VerbosityFlag,
SysStatFlag,
CodeFlag,
CodeFileFlag,
GasFlag,
Expand Down
33 changes: 21 additions & 12 deletions cmd/evm/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

goruntime "runtime"

"github.com/ethereum/go-ethereum/cmd/evm/internal/compiler"
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
Expand Down Expand Up @@ -61,7 +62,18 @@ func runCmd(ctx *cli.Context) error {
ret []byte
err error
)
if ctx.GlobalString(CodeFlag.Name) != "" {
if fn := ctx.Args().First(); len(fn) > 0 {
src, err := ioutil.ReadFile(fn)
if err != nil {
return err
}

bin, err := compiler.Compile(fn, src, false)
if err != nil {
return err
}
code = common.Hex2Bytes(bin)
} else if ctx.GlobalString(CodeFlag.Name) != "" {
code = common.Hex2Bytes(ctx.GlobalString(CodeFlag.Name))
} else {
var hexcode []byte
Expand Down Expand Up @@ -106,7 +118,7 @@ func runCmd(ctx *cli.Context) error {

ret, err = runtime.Call(receiver, common.Hex2Bytes(ctx.GlobalString(InputFlag.Name)), &runtimeConfig)
}
vmdone := time.Since(tstart)
execTime := time.Since(tstart)

if ctx.GlobalBool(DumpFlag.Name) {
statedb.Commit(true)
Expand All @@ -118,19 +130,16 @@ func runCmd(ctx *cli.Context) error {
vm.WriteTrace(os.Stderr, logger.StructLogs())
fmt.Fprintln(os.Stderr, "#### LOGS ####")
vm.WriteLogs(os.Stderr, statedb.Logs())
}

if ctx.GlobalBool(SysStatFlag.Name) {
var mem goruntime.MemStats
goruntime.ReadMemStats(&mem)
fmt.Printf("vm took %v\n", vmdone)
fmt.Printf(`alloc: %d
tot alloc: %d
no. malloc: %d
heap alloc: %d
heap objs: %d
num gc: %d
`, mem.Alloc, mem.TotalAlloc, mem.Mallocs, mem.HeapAlloc, mem.HeapObjects, mem.NumGC)
fmt.Fprintf(os.Stderr, `evm execution time: %v
heap objects: %d
allocations: %d
total allocations: %d
GC calls: %d
`, execTime, mem.HeapObjects, mem.Alloc, mem.TotalAlloc, mem.NumGC)
}

fmt.Printf("0x%x", ret)
Expand Down

0 comments on commit f30733c

Please sign in to comment.