summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-19 15:47:57 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-19 15:47:57 -0800
commit5ec0fdb423075356756c3f791a938b23f0495084 (patch)
tree025b573de8a4fd9e5870a4de4a41d1ce773e9d06 /src
parentdc7b490d57736def99a40920ad4e6e8ef1cfa3a4 (diff)
downloadbinaryen-5ec0fdb423075356756c3f791a938b23f0495084.tar.gz
binaryen-5ec0fdb423075356756c3f791a938b23f0495084.tar.bz2
binaryen-5ec0fdb423075356756c3f791a938b23f0495084.zip
support 64-bit stores in wasm.js
Diffstat (limited to 'src')
-rw-r--r--src/wasm-js.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp
index 49838c905..cbaf15fbb 100644
--- a/src/wasm-js.cpp
+++ b/src/wasm-js.cpp
@@ -302,6 +302,11 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() {
EM_ASM_INT({ Module['info'].parent['HEAP16'][$0 >> 1] = $1 }, addr, value.geti32());
} else if (store->bytes == 4) {
EM_ASM_INT({ Module['info'].parent['HEAP32'][$0 >> 2] = $1 }, addr, value.geti32());
+ } else if (store->bytes == 8) {
+ uint64_t v = value.geti64();
+ EM_ASM_INT({ Module['info'].parent['HEAP32'][$0 >> 2] = $1 }, addr, uint32_t(v));
+ v >>= 32;
+ EM_ASM_INT({ Module['info'].parent['HEAP32'][$0 + 4 >> 2] = $1 }, addr, uint32_t(v));
} else {
abort();
}