diff options
Diffstat (limited to 'ethchain/vm.go')
-rw-r--r-- | ethchain/vm.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ethchain/vm.go b/ethchain/vm.go index 0b8799a12..7acca9b36 100644 --- a/ethchain/vm.go +++ b/ethchain/vm.go @@ -52,8 +52,12 @@ type Vm struct { logStr string err error + + Hook DebugHook } +type DebugHook func(step int, op OpCode, mem *Memory, stack *Stack, stateObject *StateObject) bool + type RuntimeVars struct { Origin []byte Block *Block @@ -91,7 +95,7 @@ var Pow256 = ethutil.BigPow(2, 256) var isRequireError = false -func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err error) { +func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) { // Recover from any require exception defer func() { if r := recover(); r != nil { @@ -642,7 +646,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro // Call the closure and set the return value as // main script. var err error - c.Script, gas, err = c.Call(vm, nil, hook) + c.Script, gas, err = c.Call(vm, nil) if err != nil { stack.Push(ethutil.BigFalse) @@ -738,8 +742,8 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro vm.Endl() - if hook != nil { - if !hook(prevStep, op, mem, stack, closure.Object()) { + if vm.Hook != nil { + if !vm.Hook(prevStep, op, mem, stack, closure.Object()) { return nil, nil } } |