cmd/evm: removed -sysstat and moved content to -debug flag
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`.
This commit is contained in:
		| @@ -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", | ||||
| @@ -89,7 +85,6 @@ func init() { | ||||
| 		CreateFlag, | ||||
| 		DebugFlag, | ||||
| 		VerbosityFlag, | ||||
| 		SysStatFlag, | ||||
| 		CodeFlag, | ||||
| 		CodeFileFlag, | ||||
| 		GasFlag, | ||||
|   | ||||
| @@ -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" | ||||
| @@ -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 | ||||
| @@ -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) | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user