From 0d08eb86b6b9bc89ae71df2f22e1821c8060a6d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 21 Jan 2015 21:05:26 +0100 Subject: [PATCH] Fallback to standard VM when running precompiled contracts --- vm/vm_jit.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vm/vm_jit.go b/vm/vm_jit.go index 4f36d70587..e72dd261e5 100644 --- a/vm/vm_jit.go +++ b/vm/vm_jit.go @@ -148,6 +148,14 @@ func NewJitVm(env Environment) *JitVm { func (self *JitVm) Run(me, caller ContextRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) { self.env.SetDepth(self.env.Depth() + 1) + + if Precompiled[string(me.Address())] != nil { + // if it's address of precopiled contract + // fallback to standard VM + stdVm := New(self.env) + return stdVm.Run(me, caller, code, value, gas, price, callData) + } + self.me = me // FIXME: Make sure Run() is not used more than once self.callerAddr = caller.Address() self.price = price