diff options
author | obscuren <geffobscura@gmail.com> | 2014-07-24 18:12:00 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-07-24 18:12:00 +0800 |
commit | 3c3292d505b1c857f7fa28da0d37e3982ef5f8b5 (patch) | |
tree | eb13b79b909e4ba688300ab2bf20639e332c90ec | |
parent | 306b5bcff306bbdc5bc0b1590fca552f4fda41f6 (diff) | |
download | dexon-3c3292d505b1c857f7fa28da0d37e3982ef5f8b5.tar.gz dexon-3c3292d505b1c857f7fa28da0d37e3982ef5f8b5.tar.zst dexon-3c3292d505b1c857f7fa28da0d37e3982ef5f8b5.zip |
Added recoverable option
-rw-r--r-- | ethvm/vm.go | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/ethvm/vm.go b/ethvm/vm.go index e159d8ff1..b81c8a189 100644 --- a/ethvm/vm.go +++ b/ethvm/vm.go @@ -37,6 +37,8 @@ type Vm struct { BreakPoints []int64 Stepping bool Fn string + + Recoverable bool } type Environment interface { @@ -62,18 +64,20 @@ func New(env Environment) *Vm { lt = LogTyDiff } - return &Vm{env: env, logTy: lt} + return &Vm{env: env, logTy: lt, Recoverable: true} } func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) { - // Recover from any require exception - defer func() { - if r := recover(); r != nil { - ret = closure.Return(nil) - err = fmt.Errorf("%v", r) - vmlogger.Errorln("vm err", err) - } - }() + if self.Recoverable { + // Recover from any require exception + defer func() { + if r := recover(); r != nil { + ret = closure.Return(nil) + err = fmt.Errorf("%v", r) + vmlogger.Errorln("vm err", err) + } + }() + } // Debug hook if self.Dbg != nil { |