summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2019-07-01 16:46:08 -0400
committerAlon Zakai <azakai@google.com>2019-07-01 13:46:08 -0700
commitab34a779552ea4a8747e7729433d8c7f89c458c0 (patch)
treea6037c5bf1e4bd1379621116fd285f69621ab9ed
parent6f466401cb5ee6138898cddb0e9ed3e741166011 (diff)
downloadbinaryen-ab34a779552ea4a8747e7729433d8c7f89c458c0.tar.gz
binaryen-ab34a779552ea4a8747e7729433d8c7f89c458c0.tar.bz2
binaryen-ab34a779552ea4a8747e7729433d8c7f89c458c0.zip
Workaround for wasm2js output minification issue with emscripten (#2185)
* Workaround for wasm2js output minification issue with emscripten When using emscripten with -O2 and --memory-init-file 0, the JS minification breaks on this function for memory initialization setup, causing an exception to be thrown during module setup. Moving from two 'var' declarations for the same variable to one should avoid hitting this with no change in functionality (the var gets hoisted anyway). https://github.com/emscripten-core/emscripten/issues/8886
-rw-r--r--src/wasm2js.h5
-rw-r--r--test/wasm2js/address.2asm.js5
-rw-r--r--test/wasm2js/dynamicLibrary.2asm.js5
-rw-r--r--test/wasm2js/dynamicLibrary.2asm.js.opt5
-rw-r--r--test/wasm2js/emscripten.2asm.js5
-rw-r--r--test/wasm2js/emscripten.2asm.js.opt5
6 files changed, 18 insertions, 12 deletions
diff --git a/src/wasm2js.h b/src/wasm2js.h
index a14aad2a4..d01a2dcd7 100644
--- a/src/wasm2js.h
+++ b/src/wasm2js.h
@@ -2146,12 +2146,13 @@ void Wasm2JSGlue::emitMemory(
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}
diff --git a/test/wasm2js/address.2asm.js b/test/wasm2js/address.2asm.js
index 4038425ba..210f3b737 100644
--- a/test/wasm2js/address.2asm.js
+++ b/test/wasm2js/address.2asm.js
@@ -83,12 +83,13 @@ var assignasmFunc = (
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}
diff --git a/test/wasm2js/dynamicLibrary.2asm.js b/test/wasm2js/dynamicLibrary.2asm.js
index 55c6d6500..074c2bc43 100644
--- a/test/wasm2js/dynamicLibrary.2asm.js
+++ b/test/wasm2js/dynamicLibrary.2asm.js
@@ -51,12 +51,13 @@ var assignasmFunc = (
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}
diff --git a/test/wasm2js/dynamicLibrary.2asm.js.opt b/test/wasm2js/dynamicLibrary.2asm.js.opt
index 2eebc6f98..535e6732b 100644
--- a/test/wasm2js/dynamicLibrary.2asm.js.opt
+++ b/test/wasm2js/dynamicLibrary.2asm.js.opt
@@ -43,12 +43,13 @@ var assignasmFunc = (
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}
diff --git a/test/wasm2js/emscripten.2asm.js b/test/wasm2js/emscripten.2asm.js
index 6304e9b9d..0954f3f98 100644
--- a/test/wasm2js/emscripten.2asm.js
+++ b/test/wasm2js/emscripten.2asm.js
@@ -203,12 +203,13 @@ var writeSegment = (
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}
diff --git a/test/wasm2js/emscripten.2asm.js.opt b/test/wasm2js/emscripten.2asm.js.opt
index 69251d9bb..2cb4ee46c 100644
--- a/test/wasm2js/emscripten.2asm.js.opt
+++ b/test/wasm2js/emscripten.2asm.js.opt
@@ -184,12 +184,13 @@ var writeSegment = (
function(mem) {
var _mem = new Uint8Array(mem);
return function(offset, s) {
+ var bytes;
if (typeof Buffer === 'undefined') {
- var bytes = atob(s);
+ bytes = atob(s);
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes.charCodeAt(i);
} else {
- var bytes = Buffer.from(s, 'base64');
+ bytes = Buffer.from(s, 'base64');
for (var i = 0; i < bytes.length; i++)
_mem[offset + i] = bytes[i];
}