diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 11:07:45 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 11:07:45 -0800 |
commit | 1e3848b2e5f0ea947d67954ab3044a3653eacb23 (patch) | |
tree | e68fa78bdb45b3e4315e1894532d3606366d10f3 /src/wasm-js.cpp | |
parent | cd36ba627d84d5ac27948bb30296d34f72b765f8 (diff) | |
download | binaryen-1e3848b2e5f0ea947d67954ab3044a3653eacb23.tar.gz binaryen-1e3848b2e5f0ea947d67954ab3044a3653eacb23.tar.bz2 binaryen-1e3848b2e5f0ea947d67954ab3044a3653eacb23.zip |
fix import call return type handling
Diffstat (limited to 'src/wasm-js.cpp')
-rw-r--r-- | src/wasm-js.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp index 14dfa563c..ae5957ec7 100644 --- a/src/wasm-js.cpp +++ b/src/wasm-js.cpp @@ -93,14 +93,21 @@ extern "C" void EMSCRIPTEN_KEEPALIVE load_asm(char *input) { abort(); } } - return Literal(EM_ASM_DOUBLE({ + double ret = EM_ASM_DOUBLE({ var mod = Pointer_stringify($0); var base = Pointer_stringify($1); var tempArguments = Module['tempArguments']; Module['tempArguments'] = null; var lookup = Module['lookupImport'](mod, base); return lookup.apply(null, tempArguments); - }, import->module.str, import->base.str)); + }, import->module.str, import->base.str); + switch (import->type.result) { + case none: return Literal(0); + case i32: return Literal((int32_t)ret); + case f32: return Literal((float)ret); + case f64: return Literal((double)ret); + default: abort(); + } } Literal load(Load* load, Literal ptr) override { |