to JIT (or not to JIT)
WebAssembly engines and ewasm
wasm engine types
Wasm engine
interpreted
compiled
JIT compilation not metered
AOT compilation is metered
Precompiles
Precompiles - custom gas rules
Precompiles - test cases for consensus-critical code
wasm-based precompiles
Interpreter engine execution stages
Load bytecode
Execute 1st instruction
(charge gas)
Execute 2nd instruction
(charge gas)
JIT engine execution stages
Load bytecode
Compile wasm bytecode to machine code
(no gas charged)
Execute machine code
(calls to EEI method useGas)
JIT bombs: a DoS attack on JIT wasm engines
https://gist.github.com/cdetrio/bf653174489777dd09524cbb1b13eb13
https://gist.github.com/cdetrio/ff70e99784b741cb2bc414e94feb85a1
Metered AOT vs JIT bomb sniffer