diff options
Diffstat (limited to 'ethchain')
-rw-r--r-- | ethchain/closure.go | 2 | ||||
-rw-r--r-- | ethchain/vm.go | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/ethchain/closure.go b/ethchain/closure.go index de2196499..0fbe48f92 100644 --- a/ethchain/closure.go +++ b/ethchain/closure.go @@ -69,7 +69,7 @@ func (c *Closure) Address() []byte { return c.object.Address() } -type DebugHook func(op OpCode, mem *Memory, stack *Stack) +type DebugHook func(step int, op OpCode, mem *Memory, stack *Stack) func (c *Closure) Call(vm *Vm, args []byte, hook DebugHook) []byte { c.Args = args diff --git a/ethchain/vm.go b/ethchain/vm.go index fbe0d0439..b88cd2861 100644 --- a/ethchain/vm.go +++ b/ethchain/vm.go @@ -312,6 +312,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) []byte { stack.Push(val) pc.Add(pc, big.NewInt(31)) + step++ case oPUSH20: pc.Add(pc, ethutil.Big1) data := closure.Gets(pc, big.NewInt(20)) @@ -321,7 +322,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) []byte { stack.Push(val) pc.Add(pc, big.NewInt(19)) - + step++ case oPOP: stack.Pop() case oDUP: @@ -410,7 +411,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) []byte { pc.Add(pc, ethutil.Big1) if hook != nil { - hook(op, mem, stack) + hook(step-1, op, mem, stack) } } } |