aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vm_debug.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-04 21:39:15 +0800
committerobscuren <geffobscura@gmail.com>2015-01-04 21:39:15 +0800
commit987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9 (patch)
tree32ff13edca8c3d9b61b303f7d314291d0f216574 /vm/vm_debug.go
parent1b905675465d96227f1a8144fe592e76f646f559 (diff)
parent08b03afa4bb3a40d2faf6543bc884a8ece5be2a1 (diff)
downloadgo-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar.gz
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar.bz2
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar.lz
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar.xz
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.tar.zst
go-tangerine-987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9.zip
Merge branch 'poc8' into docbranch
Diffstat (limited to 'vm/vm_debug.go')
-rw-r--r--vm/vm_debug.go25
1 files changed, 14 insertions, 11 deletions
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index 6ad385fd0..92e4154e4 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -42,12 +42,12 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
msg := self.env.State().Manifest().AddMessage(&state.Message{
To: me.Address(), From: caller.Address(),
- Input: callData,
- Origin: self.env.Origin(),
- Block: self.env.BlockHash(), Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(),
+ Input: callData,
+ Origin: self.env.Origin(),
+ Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(),
Value: value,
})
- context := NewContext(msg, caller, me, code, gas, price)
+ context := NewContext(caller, me, code, gas, price)
if self.Recoverable {
// Recover from any require exception
@@ -83,7 +83,7 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
jump = func(from uint64, to *big.Int) {
p := to.Uint64()
- nop := OpCode(context.GetOp(p))
+ nop := context.GetOp(p)
if !destinations.Has(p) {
panic(fmt.Sprintf("invalid jump destination (%v) %v", nop, p))
}
@@ -516,12 +516,15 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
self.Printf(" => %v", context.Price)
// 0x40 range
- case PREVHASH:
- prevHash := self.env.PrevHash()
-
- stack.Push(ethutil.BigD(prevHash))
+ case BLOCKHASH:
+ num := stack.Pop()
+ if num.Cmp(new(big.Int).Sub(self.env.BlockNumber(), ethutil.Big256)) < 0 {
+ stack.Push(ethutil.Big0)
+ } else {
+ stack.Push(ethutil.BigD(self.env.GetHash(num.Uint64())))
+ }
- self.Printf(" => 0x%x", prevHash)
+ self.Printf(" => 0x%x", stack.Peek().Bytes())
case COINBASE:
coinbase := self.env.Coinbase()
@@ -614,7 +617,7 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
val, loc := stack.Popn()
statedb.SetState(context.Address(), loc.Bytes(), val)
- context.message.AddStorageChange(loc.Bytes())
+ msg.AddStorageChange(loc.Bytes())
self.Printf(" {0x%x : 0x%x}", loc.Bytes(), val.Bytes())
case JUMP: