aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
Diffstat (limited to 'vm')
-rw-r--r--vm/vm_debug.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index 81db45f19..255faefb0 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -50,10 +50,6 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
vmlogger.Debugf("(%d) (%x) %x (code=%d) gas: %v (d) %x\n", self.env.Depth(), caller.Address()[:4], context.Address(), len(code), context.Gas, callData)
- if p := Precompiled[string(me.Address())]; p != nil {
- return self.RunPrecompiled(p, callData, context)
- }
-
if self.Recoverable {
// Recover from any require exception
defer func() {
@@ -70,6 +66,10 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
}()
}
+ if p := Precompiled[string(me.Address())]; p != nil {
+ return self.RunPrecompiled(p, callData, context)
+ }
+
var (
op OpCode
@@ -513,10 +513,12 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
// 0x40 range
case BLOCKHASH:
num := stack.Pop()
- if num.Cmp(new(big.Int).Sub(self.env.BlockNumber(), ethutil.Big256)) < 0 {
- stack.Push(ethutil.Big0)
- } else {
+
+ n := U256(new(big.Int).Sub(self.env.BlockNumber(), ethutil.Big257))
+ if num.Cmp(n) > 0 && num.Cmp(self.env.BlockNumber()) < 0 {
stack.Push(ethutil.BigD(self.env.GetHash(num.Uint64())))
+ } else {
+ stack.Push(ethutil.Big0)
}
self.Printf(" => 0x%x", stack.Peek().Bytes())