summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-18 18:13:23 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-18 18:13:23 -0800
commit154a6c210d89cf4270ff32fc9c996c8d8b5de63e (patch)
tree65f3ea48aaf84a34b5d8b3506a4db032aeb4ef88
parent5f855e559ce9e4a976951cdddfa527e26a66d242 (diff)
downloadbinaryen-154a6c210d89cf4270ff32fc9c996c8d8b5de63e.tar.gz
binaryen-154a6c210d89cf4270ff32fc9c996c8d8b5de63e.tar.bz2
binaryen-154a6c210d89cf4270ff32fc9c996c8d8b5de63e.zip
receive TOTAL_MEMORY from emscripten in wasm.js
-rw-r--r--src/js/post.js6
-rw-r--r--src/wasm-js.cpp4
2 files changed, 6 insertions, 4 deletions
diff --git a/src/js/post.js b/src/js/post.js
index 8e57c4a06..97fd2be9d 100644
--- a/src/js/post.js
+++ b/src/js/post.js
@@ -16,14 +16,14 @@
throw 'TODO: loading in other platforms';
}
+ var theBuffer = Module['buffer'] = new ArrayBuffer(Module['providedTotalMemory'] || 64*1024*1024);
+ wasmJS['providedTotalMemory'] = theBuffer.byteLength;
+
var temp = wasmJS._malloc(code.length + 1);
wasmJS.writeAsciiToMemory(code, temp);
wasmJS._load_asm(temp);
wasmJS._free(temp);
- // Generate memory XXX TODO get the right size
- var theBuffer = Module['buffer'] = new ArrayBuffer(Module['providedTotalMemory'] || 64*1024*1024);
-
// Information for the instance of the module.
var info = wasmJS['info'] = {
global: null,
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp
index 2da076329..0bc551bf8 100644
--- a/src/wasm-js.cpp
+++ b/src/wasm-js.cpp
@@ -52,7 +52,9 @@ extern "C" void EMSCRIPTEN_KEEPALIVE load_asm(char *input) {
Ref asmjs = builder.parseToplevel(input);
module = new Module();
- module->memory.initial = module->memory.max = 16*1024*1024; // TODO: receive this from emscripten
+ module->memory.initial = module->memory.max = EM_ASM_INT_V({
+ return Module['providedTotalMemory']; // we receive the size of memory from emscripten
+ });
#if WASM_JS_DEBUG
std::cerr << "wasming...\n";