diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-28 14:08:55 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-28 14:08:55 -0800 |
commit | d98de7569efadb1c654cd53c6404f40b15ad7ae7 (patch) | |
tree | 2cc29733acad14fa506a2b9f4ebe444338c91752 | |
parent | 6d36e9640efa7bbefc05e4db0fc6c97d79053c9b (diff) | |
download | binaryen-d98de7569efadb1c654cd53c6404f40b15ad7ae7.tar.gz binaryen-d98de7569efadb1c654cd53c6404f40b15ad7ae7.tar.bz2 binaryen-d98de7569efadb1c654cd53c6404f40b15ad7ae7.zip |
when using native wasm support, we need to merge the written data with the mem init that wasm provides
-rwxr-xr-x | build.sh | 2 | ||||
-rw-r--r-- | src/js/post.js | 4 |
2 files changed, 4 insertions, 2 deletions
@@ -3,6 +3,6 @@ g++ -O2 -std=c++11 src/binaryen-shell.cpp src/pass.cpp src/passes/*.cpp -o bin/b echo "building asm2wasm" g++ -O2 -std=c++11 src/asm2wasm-main.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp -o bin/asm2wasm echo "building interpreter/js" -em++ -std=c++11 src/wasm-js.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 #-profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2 +em++ -std=c++11 src/wasm-js.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2 cat src/js/post.js >> bin/wasm.js diff --git a/src/js/post.js b/src/js/post.js index 72cd836ba..e64774c3c 100644 --- a/src/js/post.js +++ b/src/js/post.js @@ -22,7 +22,9 @@ function integrateWasmJS(Module) { var oldBuffer = Module['buffer']; var newBuffer = instance.memory; assert(newBuffer.byteLength >= oldBuffer.byteLength, 'we might fail if we allocated more than TOTAL_MEMORY'); - (new Int8Array(newBuffer)).set(new Int8Array(oldBuffer)); + // the wasm module does write out the memory initialization, in range STATIC_BASE..STATIC_BUMP, so avoid that + (new Int8Array(newBuffer).subarray(0, STATIC_BASE)).set(new Int8Array(oldBuffer).subarray(0, STATIC_BASE)); + (new Int8Array(newBuffer).subarray(STATIC_BASE + STATIC_BUMP)).set(new Int8Array(oldBuffer).subarray(STATIC_BASE + STATIC_BUMP)); updateGlobalBuffer(newBuffer); updateGlobalBufferViews(); Module['reallocBuffer'] = function(size) { |