summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-03-30 16:34:49 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-03-30 16:34:49 -0700
commitd984d25273c512b0a2de9f60fadbf26500a7abbd (patch)
tree19ddec910a173ecd104e454083877e2379c0cbf9 /src
parent84bb319442fc0bc333924679e910c5a3475ca236 (diff)
downloadbinaryen-d984d25273c512b0a2de9f60fadbf26500a7abbd.tar.gz
binaryen-d984d25273c512b0a2de9f60fadbf26500a7abbd.tar.bz2
binaryen-d984d25273c512b0a2de9f60fadbf26500a7abbd.zip
fix wasm.js loads of aligned i64s
Diffstat (limited to 'src')
-rw-r--r--src/wasm-js.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp
index ab6f02d16..151803db1 100644
--- a/src/wasm-js.cpp
+++ b/src/wasm-js.cpp
@@ -286,6 +286,10 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() {
} else {
ret = EM_ASM_INT({ return Module['info'].parent['HEAPU32'][$0 >> 2] }, addr);
}
+ } else if (load->bytes == 8) {
+ uint32_t low = EM_ASM_INT({ return Module['info'].parent['HEAP32'][$0 >> 2] }, addr);
+ uint32_t high = EM_ASM_INT({ return Module['info'].parent['HEAP32'][$0 >> 2] }, addr + 4);
+ return Literal(int64_t(low) | (int64_t(high) << 32));
} else abort();
return load->type == i32 ? Literal(ret) : Literal(int64_t(ret));
} else {