summaryrefslogtreecommitdiff
path: root/src/wasm-js.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-27 15:15:25 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-27 15:15:25 -0700
commit4a85f62e8a83117a081e9691d8830b6a7a876d1d (patch)
treea591bf3314a2d65b776d18c3c40308d84e1855dc /src/wasm-js.cpp
parent3b2b18dc06da3895f0b54a0660ab561f2b305c92 (diff)
parent63271d39f8a1100a703adc50861e02caefc2a9d5 (diff)
downloadbinaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.tar.gz
binaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.tar.bz2
binaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.zip
Merge pull request #406 from WebAssembly/i64.load32_u
Fix zero-extension in i64.load32_u.
Diffstat (limited to 'src/wasm-js.cpp')
-rw-r--r--src/wasm-js.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp
index 116c52667..47d3543f9 100644
--- a/src/wasm-js.cpp
+++ b/src/wasm-js.cpp
@@ -290,7 +290,7 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() {
}
// nicely aligned
if (!isWasmTypeFloat(load->type)) {
- int32_t ret;
+ int64_t ret;
if (load->bytes == 1) {
if (load->signed_) {
ret = EM_ASM_INT({ return Module['info'].parent['HEAP8'][$0] }, addr);
@@ -307,14 +307,14 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() {
if (load->signed_) {
ret = EM_ASM_INT({ return Module['info'].parent['HEAP32'][$0 >> 2] }, addr);
} else {
- ret = EM_ASM_INT({ return Module['info'].parent['HEAPU32'][$0 >> 2] }, addr);
+ ret = uint32_t(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));
+ ret = uint64_t(low) | (uint64_t(high) << 32);
} else abort();
- return load->type == i32 ? Literal(ret) : Literal(int64_t(ret));
+ return load->type == i32 ? Literal(int32_t(ret)) : Literal(ret);
} else {
if (load->bytes == 4) {
return Literal((float)EM_ASM_DOUBLE({ return Module['info'].parent['HEAPF32'][$0 >> 2] }, addr));