diff --git a/ethereum/flags.go b/ethereum/flags.go index 58220f4e6bc6988dcaf466c3f2db89997360613f..7924dd7bf46d27fd98ebd6560891400eb5f0dfbd 100644 --- a/ethereum/flags.go +++ b/ethereum/flags.go @@ -3,11 +3,13 @@ package main import ( "flag" "fmt" + "log" "os" "os/user" "path" "github.com/ethereum/eth-go/ethlog" + "github.com/ethereum/eth-go/ethvm" ) var ( @@ -37,6 +39,7 @@ var ( Dump bool DumpHash string DumpNumber int + VmType int ) // flags specific to cli client @@ -59,6 +62,7 @@ func Init() { flag.PrintDefaults() } + flag.IntVar(&VmType, "vm", 0, "Virtual Machine type: 0-1: standard, debug") flag.StringVar(&Identifier, "id", "", "Custom client identifier") flag.StringVar(&KeyRing, "keyring", "", "identifier for keyring to use") flag.StringVar(&KeyStore, "keystore", "db", "system to store keyrings: db|file (db)") @@ -91,5 +95,9 @@ func Init() { flag.Parse() + if VmType >= int(ethvm.MaxVmTy) { + log.Fatal("Invalid VM type ", VmType) + } + InputFile = flag.Arg(0) } diff --git a/ethereum/main.go b/ethereum/main.go index 6a9af6b965a2d0b57c08f4c13e682e7b6e9d0d13..b8f8ce39ad0d42b1dd3ef39c3319fad0c31281ba 100644 --- a/ethereum/main.go +++ b/ethereum/main.go @@ -31,7 +31,7 @@ func main() { LogLevel = 0 } - utils.InitConfig(ConfigFile, Datadir, "ETH") + utils.InitConfig(VmType, ConfigFile, Datadir, "ETH") ethutil.Config.Diff = DiffTool ethutil.Config.DiffType = DiffType diff --git a/mist/debugger.go b/mist/debugger.go index 9d1de8c4251803670e4938d9d99c1a43889f3fe7..241635ebed8f011ef6fa053447d91ada82293bb0 100644 --- a/mist/debugger.go +++ b/mist/debugger.go @@ -20,7 +20,7 @@ type DebuggerWindow struct { engine *qml.Engine lib *UiLib - vm *ethvm.Vm + vm *ethvm.DebugVm Db *Debugger state *ethstate.State @@ -37,7 +37,7 @@ func NewDebuggerWindow(lib *UiLib) *DebuggerWindow { win := component.CreateWindow(nil) - w := &DebuggerWindow{engine: engine, win: win, lib: lib, vm: ðvm.Vm{}} + w := &DebuggerWindow{engine: engine, win: win, lib: lib, vm: ðvm.DebugVm{}} w.Db = NewDebugger(w) return w @@ -135,8 +135,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data callerClosure := ethvm.NewClosure(ðstate.Message{}, account, contract, script, gas, gasPrice) env := utils.NewEnv(state, block, account.Address(), value) - vm := ethvm.New(env) - vm.Verbose = true + vm := ethvm.NewDebugVm(env) vm.Dbg = self.Db self.vm = vm diff --git a/mist/flags.go b/mist/flags.go index a56d689c04272e4c019ce026e3898d0fdb9d00ab..5cf34c74072f8ea85024219f4c5fc721b84a0743 100644 --- a/mist/flags.go +++ b/mist/flags.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "log" "os" "os/user" "path" @@ -11,6 +12,7 @@ import ( "bitbucket.org/kardianos/osext" "github.com/ethereum/eth-go/ethlog" + "github.com/ethereum/eth-go/ethvm" ) var ( @@ -35,6 +37,7 @@ var ( ConfigFile string DebugFile string LogLevel int + VmType int ) // flags specific to gui client @@ -78,6 +81,7 @@ func Init() { flag.PrintDefaults() } + flag.IntVar(&VmType, "vm", 0, "Virtual Machine type: 0-1: standard, debug") flag.StringVar(&Identifier, "id", "", "Custom client identifier") flag.StringVar(&KeyRing, "keyring", "", "identifier for keyring to use") flag.StringVar(&KeyStore, "keystore", "db", "system to store keyrings: db|file (db)") @@ -101,4 +105,8 @@ func Init() { flag.StringVar(&AssetPath, "asset_path", defaultAssetPath(), "absolute path to GUI assets directory") flag.Parse() + + if VmType >= int(ethvm.MaxVmTy) { + log.Fatal("Invalid VM type ", VmType) + } } diff --git a/mist/main.go b/mist/main.go index 12f8681cf1b08b2107e4570ee4606c7e09f95cda..54c4d450137dc46336a4eec54376432da8b9299c 100644 --- a/mist/main.go +++ b/mist/main.go @@ -21,7 +21,7 @@ func run() error { // precedence: code-internal flag default < config file < environment variables < command line Init() // parsing command line - config := utils.InitConfig(ConfigFile, Datadir, "ETH") + config := utils.InitConfig(VmType, ConfigFile, Datadir, "ETH") utils.InitDataDir(Datadir) diff --git a/utils/cmd.go b/utils/cmd.go index 700542cae42ee899e7d13640b23a4ee6f51c40b1..060e8067bf32a7e9f9bc0a85ccd59d2ec0331b0d 100644 --- a/utils/cmd.go +++ b/utils/cmd.go @@ -118,9 +118,12 @@ func InitLogging(Datadir string, LogFile string, LogLevel int, DebugFile string) return sys } -func InitConfig(ConfigFile string, Datadir string, EnvPrefix string) *ethutil.ConfigManager { +func InitConfig(vmType int, ConfigFile string, Datadir string, EnvPrefix string) *ethutil.ConfigManager { InitDataDir(Datadir) - return ethutil.ReadConfig(ConfigFile, Datadir, EnvPrefix) + cfg := ethutil.ReadConfig(ConfigFile, Datadir, EnvPrefix) + cfg.VmType = vmType + + return cfg } func exit(err error) {