From abe7715f1fcae73a1038366fb60928f669a1c287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Thu, 18 Oct 2018 19:04:56 +0200 Subject: [PATCH] core/vm: Add support for EVMC capabilities --- core/vm/evmc.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/vm/evmc.go b/core/vm/evmc.go index 2b78e576ee..c8706ced48 100644 --- a/core/vm/evmc.go +++ b/core/vm/evmc.go @@ -17,6 +17,7 @@ package vm import ( + "bytes" "fmt" "math/big" "os" @@ -306,6 +307,11 @@ func (evm *EVMC) Run(contract *Contract, input []byte, readOnly bool) (ret []byt return output, err } -func (evm *EVMC) CanRun([]byte) bool { - return true +func (evm *EVMC) CanRun(code []byte) bool { + cap := evmc.CapabilityEVM1 + if (bytes.Equal(code[0:4], []byte("\x00asm"))) { + cap = evmc.CapabilityEWASM + } + // FIXME: Optimize. Access capabilities once. + return evm.instance.HasCapability(cap) }