Skip to content

Commit c212f32

Browse files
committed
core/vm: Add EVMC support
1 parent 00ae575 commit c212f32

File tree

2 files changed

+386
-17
lines changed

2 files changed

+386
-17
lines changed

core/vm/evm.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -140,24 +140,21 @@ func NewEVM(ctx Context, statedb StateDB, chainConfig *params.ChainConfig, vmCon
140140
}
141141

142142
if chainConfig.IsEWASM(ctx.BlockNumber) {
143-
// to be implemented by EVM-C and Wagon PRs.
144-
// if vmConfig.EWASMInterpreter != "" {
145-
// extIntOpts := strings.Split(vmConfig.EWASMInterpreter, ":")
146-
// path := extIntOpts[0]
147-
// options := []string{}
148-
// if len(extIntOpts) > 1 {
149-
// options = extIntOpts[1..]
150-
// }
151-
// evm.interpreters = append(evm.interpreters, NewEVMVCInterpreter(evm, vmConfig, options))
152-
// } else {
153-
// evm.interpreters = append(evm.interpreters, NewEWASMInterpreter(evm, vmConfig))
154-
// }
155-
panic("No supported ewasm interpreter yet.")
156-
}
157-
158-
// vmConfig.EVMInterpreter will be used by EVM-C, it won't be checked here
159-
// as we always want to have the built-in EVM as the failover option.
143+
if vmConfig.EWASMInterpreter != "" {
144+
evm.interpreters = append(evm.interpreters, NewEVMC(vmConfig.EWASMInterpreter, evm))
145+
} else {
146+
panic("The default ewasm interpreter not supported yet.")
147+
}
148+
}
149+
150+
if vmConfig.EVMInterpreter != "" {
151+
// Create custom EVM.
152+
evm.interpreters = append(evm.interpreters, NewEVMC(vmConfig.EVMInterpreter, evm))
153+
}
154+
155+
// Keep the built-in EVM as the failover option.
160156
evm.interpreters = append(evm.interpreters, NewEVMInterpreter(evm, vmConfig))
157+
161158
evm.interpreter = evm.interpreters[0]
162159

163160
return evm

0 commit comments

Comments
 (0)