|
|
@@ -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())
|