summaryrefslogtreecommitdiff
path: root/src/js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-28 14:08:55 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-28 14:08:55 -0800
commitd98de7569efadb1c654cd53c6404f40b15ad7ae7 (patch)
tree2cc29733acad14fa506a2b9f4ebe444338c91752 /src/js
parent6d36e9640efa7bbefc05e4db0fc6c97d79053c9b (diff)
downloadbinaryen-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
Diffstat (limited to 'src/js')
-rw-r--r--src/js/post.js4
1 files changed, 3 insertions, 1 deletions
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) {