summaryrefslogtreecommitdiff
path: root/src/asm_v_wasm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/asm_v_wasm.h')
-rw-r--r--src/asm_v_wasm.h21
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