aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vm_debug.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-03 00:35:55 +0800
committerobscuren <geffobscura@gmail.com>2015-01-03 00:35:55 +0800
commit55e55826ee3b763be8805dcdef0468a179619ba1 (patch)
tree067d0cdce0e6456a4feb5453ef1d33e3aa5c80cb /vm/vm_debug.go
parent530953050ad0cf99d2a354c165b431d111baa1e3 (diff)
downloaddexon-55e55826ee3b763be8805dcdef0468a179619ba1.tar.gz
dexon-55e55826ee3b763be8805dcdef0468a179619ba1.tar.zst
dexon-55e55826ee3b763be8805dcdef0468a179619ba1.zip
Changed JUMP(I) behaviour.
* All jumps must land on a JUMPDEST instruction byte. * The byte may not be part of a PUSH*
Diffstat (limited to 'vm/vm_debug.go')
-rw-r--r--vm/vm_debug.go20
1 files changed, 2 insertions, 18 deletions
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index 1b9c480f8..6ad385fd0 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -83,29 +83,13 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
jump = func(from uint64, to *big.Int) {
p := to.Uint64()
- self.Printf(" ~> %v", to)
- /* NOTE: new model. Will change soon
nop := OpCode(context.GetOp(p))
- if nop != JUMPDEST {
+ if !destinations.Has(p) {
panic(fmt.Sprintf("invalid jump destination (%v) %v", nop, p))
}
+ self.Printf(" ~> %v", to)
pc = to.Uint64()
- */
- // Return to start
- if p == 0 {
- pc = 0
- } else {
- nop := OpCode(context.GetOp(p))
- if !(nop == JUMPDEST || destinations[from] != nil) {
- panic(fmt.Sprintf("invalid jump destination (%v) %v", nop, p))
- } else if nop == JUMP || nop == JUMPI {
- panic(fmt.Sprintf("not allowed to JUMP(I) in to JUMP"))
- }
-
- pc = to.Uint64()
-
- }
self.Endl()
}