diff options
Diffstat (limited to 'src/asm_v_wasm.h')
-rw-r--r-- | src/asm_v_wasm.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/asm_v_wasm.h b/src/asm_v_wasm.h index a19334c2c..f0065bbf9 100644 --- a/src/asm_v_wasm.h +++ b/src/asm_v_wasm.h @@ -46,6 +46,7 @@ AsmType wasmToAsmType(WasmType type) { char getSig(WasmType type) { switch (type) { case i32: return 'i'; + case i64: return 'j'; case f32: return 'f'; case f64: return 'd'; case none: return 'v'; @@ -80,6 +81,26 @@ std::string getSig(CallBase *call) { return ret; } +WasmType sigToWasmType(char sig) { + switch (sig) { + case 'i': return i32; + case 'j': return i64; + case 'f': return f32; + case 'd': return f64; + case 'v': return none; + default: abort(); + } +} + +FunctionType sigToFunctionType(std::string sig) { + FunctionType ret; + ret.result = sigToWasmType(sig[0]); + for (size_t i = 1; i < sig.size(); i++) { + ret.params.push_back(sigToWasmType(sig[i])); + } + return ret; +} + } // namespace wasm #endif // wasm_asm_v_wasm_h |