From d15952c867f5c31fa68600754bd17c76a992a70e Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 2 Jul 2014 01:04:21 +0200
Subject: Moved debug hook to Vm directly

---
 ethchain/closure.go          |  6 ++----
 ethchain/state_transition.go |  2 +-
 ethchain/vm.go               | 12 ++++++++----
 3 files changed, 11 insertions(+), 9 deletions(-)

(limited to 'ethchain')

diff --git a/ethchain/closure.go b/ethchain/closure.go
index 966e8254a..cc769de30 100644
--- a/ethchain/closure.go
+++ b/ethchain/closure.go
@@ -74,12 +74,10 @@ func (c *Closure) Address() []byte {
 	return c.object.Address()
 }
 
-type DebugHook func(step int, op OpCode, mem *Memory, stack *Stack, stateObject *StateObject) bool
-
-func (c *Closure) Call(vm *Vm, args []byte, hook DebugHook) ([]byte, *big.Int, error) {
+func (c *Closure) Call(vm *Vm, args []byte) ([]byte, *big.Int, error) {
 	c.Args = args
 
-	ret, err := vm.RunClosure(c, hook)
+	ret, err := vm.RunClosure(c)
 
 	return ret, c.UsedGas, err
 }
diff --git a/ethchain/state_transition.go b/ethchain/state_transition.go
index c382bcd60..9e7ef3efd 100644
--- a/ethchain/state_transition.go
+++ b/ethchain/state_transition.go
@@ -261,7 +261,7 @@ func (self *StateTransition) Eval(script []byte, context *StateObject) (ret []by
 }
 
 func Call(vm *Vm, closure *Closure, data []byte) (ret []byte, err error, deepErr bool) {
-	ret, _, err = closure.Call(vm, data, nil)
+	ret, _, err = closure.Call(vm, data)
 	deepErr = vm.err != nil
 
 	Paranoia := ethutil.Config.Paranoia
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
 			}
 		}
-- 
cgit v1.2.3