summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2020-09-21 16:39:46 -0700
committerGitHub <noreply@github.com>2020-09-21 16:39:46 -0700
commitee00f647750f23e6c24e67424bafab39b244c835 (patch)
treee99f91b24cda95a3292eccb92fec09a0e168ca66
parent4d6e9ea2d1796c984e3ebc38d0b6abdf8049941a (diff)
downloadbinaryen-ee00f647750f23e6c24e67424bafab39b244c835.tar.gz
binaryen-ee00f647750f23e6c24e67424bafab39b244c835.tar.bz2
binaryen-ee00f647750f23e6c24e67424bafab39b244c835.zip
wasm2js: Support exported tables (#3152)
-rw-r--r--scripts/test/env.js4
-rw-r--r--scripts/wasm2js.js4
-rw-r--r--src/wasm2js.h205
-rw-r--r--test/binaryen.js/emit_asmjs.js.txt1
-rw-r--r--test/wasm2js.asserts.js1
-rw-r--r--test/wasm2js.traps.js1
-rw-r--r--test/wasm2js/add_div.2asm.js1
-rw-r--r--test/wasm2js/add_div.2asm.js.opt1
-rw-r--r--test/wasm2js/atomic_fence.2asm.js1
-rw-r--r--test/wasm2js/atomic_fence.2asm.js.opt1
-rw-r--r--test/wasm2js/atomics_32.2asm.js1
-rw-r--r--test/wasm2js/atomics_32.2asm.js.opt1
-rw-r--r--test/wasm2js/base64.2asm.js1
-rw-r--r--test/wasm2js/base64.2asm.js.opt1
-rw-r--r--test/wasm2js/br.2asm.js1
-rw-r--r--test/wasm2js/br_table.2asm.js1
-rw-r--r--test/wasm2js/br_table_hoisting.2asm.js1
-rw-r--r--test/wasm2js/br_table_hoisting.2asm.js.opt1
-rw-r--r--test/wasm2js/br_table_temp.2asm.js1
-rw-r--r--test/wasm2js/br_table_temp.2asm.js.opt1
-rw-r--r--test/wasm2js/br_table_to_loop.2asm.js1
-rw-r--r--test/wasm2js/br_table_to_loop.2asm.js.opt1
-rw-r--r--test/wasm2js/break-drop.2asm.js1
-rw-r--r--test/wasm2js/bulk-memory.2asm.js5
-rw-r--r--test/wasm2js/bulk-memory.2asm.js.opt5
-rw-r--r--test/wasm2js/comments.2asm.js2
-rw-r--r--test/wasm2js/conversions-modified.2asm.js1
-rw-r--r--test/wasm2js/conversions-modified.2asm.js.opt1
-rw-r--r--test/wasm2js/deterministic.2asm.js1
-rw-r--r--test/wasm2js/deterministic.2asm.js.opt1
-rw-r--r--test/wasm2js/dot_import.2asm.js1
-rw-r--r--test/wasm2js/dot_import.2asm.js.opt1
-rw-r--r--test/wasm2js/dynamicLibrary.2asm.js16
-rw-r--r--test/wasm2js/dynamicLibrary.2asm.js.opt16
-rw-r--r--test/wasm2js/empty_export.2asm.js1
-rw-r--r--test/wasm2js/empty_export.2asm.js.opt1
-rw-r--r--test/wasm2js/empty_table.2asm.js1
-rw-r--r--test/wasm2js/emscripten-grow-no.2asm.js4
-rw-r--r--test/wasm2js/emscripten-grow-no.2asm.js.opt4
-rw-r--r--test/wasm2js/emscripten-grow-yes.2asm.js4
-rw-r--r--test/wasm2js/emscripten-grow-yes.2asm.js.opt4
-rw-r--r--test/wasm2js/emscripten.2asm.js5
-rw-r--r--test/wasm2js/emscripten.2asm.js.opt5
-rw-r--r--test/wasm2js/endianness.2asm.js1
-rw-r--r--test/wasm2js/excess_fallthrough.2asm.js1
-rw-r--r--test/wasm2js/excess_fallthrough.2asm.js.opt1
-rw-r--r--test/wasm2js/f32.2asm.js1
-rw-r--r--test/wasm2js/f32_cmp.2asm.js1
-rw-r--r--test/wasm2js/f64_cmp.2asm.js1
-rw-r--r--test/wasm2js/fac.2asm.js1
-rw-r--r--test/wasm2js/float-ops.2asm.js1
-rw-r--r--test/wasm2js/float-ops.2asm.js.opt1
-rw-r--r--test/wasm2js/float_literals-modified.2asm.js1
-rw-r--r--test/wasm2js/float_literals-modified.2asm.js.opt1
-rw-r--r--test/wasm2js/float_misc.2asm.js1
-rw-r--r--test/wasm2js/forward.2asm.js1
-rw-r--r--test/wasm2js/func_ptrs.2asm.js1
-rw-r--r--test/wasm2js/get-set-local.2asm.js1
-rw-r--r--test/wasm2js/get-set-local.2asm.js.opt1
-rw-r--r--test/wasm2js/get_local.2asm.js1
-rw-r--r--test/wasm2js/global_i64.2asm.js1
-rw-r--r--test/wasm2js/global_i64.2asm.js.opt1
-rw-r--r--test/wasm2js/grow-memory-tricky.2asm.js1
-rw-r--r--test/wasm2js/grow-memory-tricky.2asm.js.opt1
-rw-r--r--test/wasm2js/grow_memory.2asm.js1
-rw-r--r--test/wasm2js/i32.2asm.js1
-rw-r--r--test/wasm2js/i64-add-sub.2asm.js1
-rw-r--r--test/wasm2js/i64-add-sub.2asm.js.opt1
-rw-r--r--test/wasm2js/i64-ctz.2asm.js1
-rw-r--r--test/wasm2js/i64-ctz.2asm.js.opt1
-rw-r--r--test/wasm2js/i64-lowering.2asm.js1
-rw-r--r--test/wasm2js/i64-lowering.2asm.js.opt1
-rw-r--r--test/wasm2js/i64-rotate.2asm.js1
-rw-r--r--test/wasm2js/i64-rotate.2asm.js.opt1
-rw-r--r--test/wasm2js/i64-select.2asm.js1
-rw-r--r--test/wasm2js/i64-select.2asm.js.opt1
-rw-r--r--test/wasm2js/i64-shifts.2asm.js1
-rw-r--r--test/wasm2js/i64-shifts.2asm.js.opt1
-rw-r--r--test/wasm2js/if_unreachable.2asm.js1
-rw-r--r--test/wasm2js/if_unreachable.2asm.js.opt1
-rw-r--r--test/wasm2js/indirect-select.2asm.js5
-rw-r--r--test/wasm2js/indirect-select.2asm.js.opt5
-rw-r--r--test/wasm2js/int_exprs.2asm.js19
-rw-r--r--test/wasm2js/labels.2asm.js1
-rw-r--r--test/wasm2js/minified-memory.2asm.js1
-rw-r--r--test/wasm2js/minified-memory.2asm.js.opt1
-rw-r--r--test/wasm2js/minus_minus.2asm.js1
-rw-r--r--test/wasm2js/minus_minus.2asm.js.opt1
-rw-r--r--test/wasm2js/nested-selects.2asm.js1
-rw-r--r--test/wasm2js/nested-selects.2asm.js.opt1
-rw-r--r--test/wasm2js/ordering.2asm.js5
-rw-r--r--test/wasm2js/ordering.2asm.js.opt5
-rw-r--r--test/wasm2js/reinterpret.2asm.js1
-rw-r--r--test/wasm2js/reinterpret.2asm.js.opt1
-rw-r--r--test/wasm2js/reinterpret_scratch.2asm.js1
-rw-r--r--test/wasm2js/reinterpret_scratch.2asm.js.opt1
-rw-r--r--test/wasm2js/set_local.2asm.js1
-rw-r--r--test/wasm2js/sign_ext.2asm.js1
-rw-r--r--test/wasm2js/sign_ext.2asm.js.opt1
-rw-r--r--test/wasm2js/stack-modified.2asm.js1
-rw-r--r--test/wasm2js/stack-modified.2asm.js.opt1
-rw-r--r--test/wasm2js/start_func.2asm.js1
-rw-r--r--test/wasm2js/start_func.2asm.js.opt1
-rw-r--r--test/wasm2js/switch.2asm.js1
-rw-r--r--test/wasm2js/tee_local.2asm.js1
-rw-r--r--test/wasm2js/traps.2asm.js4
-rw-r--r--test/wasm2js/unaligned.2asm.js1
-rw-r--r--test/wasm2js/unaligned.2asm.js.opt1
-rw-r--r--test/wasm2js/unary-ops.2asm.js1
-rw-r--r--test/wasm2js/unary-ops.2asm.js.opt1
-rw-r--r--test/wasm2js/unreachable-get-cycle.2asm.js1
-rw-r--r--test/wasm2js/unreachable-get-cycle.2asm.js.opt1
-rw-r--r--test/wasm2js/unreachable-insts.2asm.js1
-rw-r--r--test/wasm2js/unreachable-insts.2asm.js.opt1
-rw-r--r--test/wasm2js/unreachable-later.2asm.js1
-rw-r--r--test/wasm2js/unreachable-later.2asm.js.opt1
116 files changed, 201 insertions, 221 deletions
diff --git a/scripts/test/env.js b/scripts/test/env.js
index 0eb3f06f4..4dcfa7d2b 100644
--- a/scripts/test/env.js
+++ b/scripts/test/env.js
@@ -1,5 +1,5 @@
-
-export const FUNCTION_TABLE = [];
+// This is the name by which the tests import the wasm table.
+export const table = [];
var tempRet0 = 0;
diff --git a/scripts/wasm2js.js b/scripts/wasm2js.js
index bc9ac6cbd..7bb8453bc 100644
--- a/scripts/wasm2js.js
+++ b/scripts/wasm2js.js
@@ -72,7 +72,7 @@ var WebAssembly = {
// Additional imports
asmLibraryArg['__tempMemory__'] = 0; // risky!
// This will be replaced by the actual wasm2js code.
- var exports = instantiate(asmLibraryArg, wasmMemory, wasmTable);
+ var exports = instantiate(asmLibraryArg, wasmMemory);
return {
'exports': exports
};
@@ -208,5 +208,3 @@ var asmLibraryArg = {
};
var wasmMemory = new WebAssembly.Memory({ initial: 1 });
-var wasmTable = new WebAssembly.Table({ initial: 1 });
-
diff --git a/src/wasm2js.h b/src/wasm2js.h
index 7377dad31..5cf01ea84 100644
--- a/src/wasm2js.h
+++ b/src/wasm2js.h
@@ -80,6 +80,18 @@ void sequenceAppend(Ref& ast, Ref extra) {
ast = ValueBuilder::makeSeq(ast, extra);
}
+bool isTableExported(Module& wasm) {
+ if (!wasm.table.exists || wasm.table.imported()) {
+ return false;
+ }
+ for (auto& ex : wasm.exports) {
+ if (ex->kind == ExternalKind::Table && ex->value == wasm.table.name) {
+ return true;
+ }
+ }
+ return false;
+}
+
IString stringToIString(std::string str) { return IString(str.c_str(), false); }
// Used when taking a wasm name and generating a JS identifier. Each scope here
@@ -384,13 +396,14 @@ Ref Wasm2JSBuilder::processWasm(Module* wasm, Name funcName) {
ValueBuilder::makeDot(ValueBuilder::makeName(ENV),
ValueBuilder::makeName(wasm->memory.base)));
}
- // for emscripten, add a table import - otherwise we would have
- // FUNCTION_TABLE be an upvar, and not as easy to be minified.
- if (flags.emscripten && wasm->table.exists && wasm->table.imported()) {
+ // add table import
+ if (wasm->table.exists && wasm->table.imported()) {
Ref theVar = ValueBuilder::makeVar();
asmFunc[3]->push_back(theVar);
ValueBuilder::appendToVar(
- theVar, FUNCTION_TABLE, ValueBuilder::makeName("wasmTable"));
+ theVar,
+ FUNCTION_TABLE,
+ ValueBuilder::makeDot(ValueBuilder::makeName(ENV), wasm->table.base));
}
// create heaps, etc
addBasics(asmFunc[3]);
@@ -541,31 +554,60 @@ void Wasm2JSBuilder::addGlobalImport(Ref ast, Global* import) {
}
void Wasm2JSBuilder::addTable(Ref ast, Module* wasm) {
+ if (!wasm->table.exists) {
+ return;
+ }
+
+ bool perElementInit = false;
+
// Emit a simple flat table as a JS array literal. Otherwise,
// emit assignments separately for each index.
- TableUtils::FlatTable flat(wasm->table);
- if (flat.valid && !wasm->table.imported()) {
- Ref theVar = ValueBuilder::makeVar();
- ast->push_back(theVar);
- Ref theArray = ValueBuilder::makeArray();
- ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, theArray);
- Name null("null");
- for (auto& name : flat.names) {
- if (name.is()) {
- name = fromName(name, NameScope::Top);
- } else {
- name = null;
+ Ref theArray = ValueBuilder::makeArray();
+ if (!wasm->table.imported()) {
+ TableUtils::FlatTable flat(wasm->table);
+ if (flat.valid) {
+ Name null("null");
+ for (auto& name : flat.names) {
+ if (name.is()) {
+ name = fromName(name, NameScope::Top);
+ } else {
+ name = null;
+ }
+ ValueBuilder::appendToArray(theArray, ValueBuilder::makeName(name));
}
- ValueBuilder::appendToArray(theArray, ValueBuilder::makeName(name));
+ } else {
+ perElementInit = true;
+ Ref initial =
+ ValueBuilder::makeInt(Address::address32_t(wasm->table.initial.addr));
+ theArray = ValueBuilder::makeNew(
+ ValueBuilder::makeCall(IString("Array"), initial));
}
} else {
- if (!wasm->table.imported()) {
- Ref theVar = ValueBuilder::makeVar();
- ast->push_back(theVar);
- ValueBuilder::appendToVar(
- theVar, FUNCTION_TABLE, ValueBuilder::makeArray());
+ perElementInit = true;
+ }
+
+ if (isTableExported(*wasm)) {
+ // If the table is exported use a fake WebAssembly.Table object
+ // We don't handle the case where a table is both imported and exported.
+ if (wasm->table.imported()) {
+ Fatal() << "wasm2js doesn't support a table that is both imported and "
+ "exported\n";
}
+ Ref theVar = ValueBuilder::makeVar();
+ ast->push_back(theVar);
+ Ref table =
+ ValueBuilder::makeNew(ValueBuilder::makeCall(IString("Table"), theArray));
+ ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, table);
+ } else if (!wasm->table.imported()) {
+ // Otherwise if the table is internal (neither imported not exported).
+ // Just use a plain array in this case, avoiding the Table.
+ Ref theVar = ValueBuilder::makeVar();
+ ast->push_back(theVar);
+ ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, theArray);
+ }
+
+ if (perElementInit) {
// TODO: optimize for size
for (auto& segment : wasm->table.segments) {
auto offset = segment.offset;
@@ -600,36 +642,60 @@ void Wasm2JSBuilder::addStart(Ref ast, Module* wasm) {
void Wasm2JSBuilder::addExports(Ref ast, Module* wasm) {
Ref exports = ValueBuilder::makeObject();
for (auto& export_ : wasm->exports) {
- if (export_->kind == ExternalKind::Function) {
- ValueBuilder::appendToObjectWithQuotes(
- exports,
- fromName(export_->name, NameScope::Export),
- ValueBuilder::makeName(fromName(export_->value, NameScope::Top)));
- }
- if (export_->kind == ExternalKind::Memory) {
- Ref descs = ValueBuilder::makeObject();
- Ref growDesc = ValueBuilder::makeObject();
- ValueBuilder::appendToObjectWithQuotes(descs, IString("grow"), growDesc);
- if (wasm->memory.max > wasm->memory.initial) {
+ switch (export_->kind) {
+ case ExternalKind::Function: {
+ ValueBuilder::appendToObjectWithQuotes(
+ exports,
+ fromName(export_->name, NameScope::Export),
+ ValueBuilder::makeName(fromName(export_->value, NameScope::Top)));
+ break;
+ }
+ case ExternalKind::Memory: {
+ Ref descs = ValueBuilder::makeObject();
+ Ref growDesc = ValueBuilder::makeObject();
+ ValueBuilder::appendToObjectWithQuotes(
+ descs, IString("grow"), growDesc);
+ if (wasm->memory.max > wasm->memory.initial) {
+ ValueBuilder::appendToObjectWithQuotes(
+ growDesc,
+ IString("value"),
+ ValueBuilder::makeName(WASM_MEMORY_GROW));
+ }
+ Ref bufferDesc = ValueBuilder::makeObject();
+ Ref bufferGetter = ValueBuilder::makeFunction(IString(""));
+ bufferGetter[3]->push_back(
+ ValueBuilder::makeReturn(ValueBuilder::makeName(BUFFER)));
+ ValueBuilder::appendToObjectWithQuotes(
+ bufferDesc, IString("get"), bufferGetter);
+ ValueBuilder::appendToObjectWithQuotes(
+ descs, IString("buffer"), bufferDesc);
+ Ref memory = ValueBuilder::makeCall(
+ ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")),
+ IString("create")),
+ ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")),
+ IString("prototype")));
+ ValueBuilder::appendToCall(memory, descs);
+ ValueBuilder::appendToObjectWithQuotes(
+ exports, fromName(export_->name, NameScope::Export), memory);
+ break;
+ }
+ case ExternalKind::Table: {
ValueBuilder::appendToObjectWithQuotes(
- growDesc, IString("value"), ValueBuilder::makeName(WASM_MEMORY_GROW));
+ exports,
+ fromName(export_->name, NameScope::Export),
+ ValueBuilder::makeName(FUNCTION_TABLE));
+ break;
}
- Ref bufferDesc = ValueBuilder::makeObject();
- Ref bufferGetter = ValueBuilder::makeFunction(IString(""));
- bufferGetter[3]->push_back(
- ValueBuilder::makeReturn(ValueBuilder::makeName(BUFFER)));
- ValueBuilder::appendToObjectWithQuotes(
- bufferDesc, IString("get"), bufferGetter);
- ValueBuilder::appendToObjectWithQuotes(
- descs, IString("buffer"), bufferDesc);
- Ref memory = ValueBuilder::makeCall(
- ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")),
- IString("create")),
- ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")),
- IString("prototype")));
- ValueBuilder::appendToCall(memory, descs);
- ValueBuilder::appendToObjectWithQuotes(
- exports, fromName(export_->name, NameScope::Export), memory);
+ case ExternalKind::Global: {
+ ValueBuilder::appendToObjectWithQuotes(
+ exports,
+ fromName(export_->name, NameScope::Export),
+ ValueBuilder::makeName(fromName(export_->value, NameScope::Top)));
+ break;
+ }
+ case ExternalKind::Event:
+ case ExternalKind::Invalid:
+ Fatal() << "unsupported export type: " << export_->name << "\n";
}
}
if (wasm->memory.exists) {
@@ -2244,11 +2310,32 @@ void Wasm2JSGlue::emitPre() {
emitPreES6();
}
+ if (isTableExported(wasm)) {
+ out << "function Table(ret) {\n";
+ if (wasm.table.initial == wasm.table.max) {
+ out << " // grow method not included; table is not growable\n";
+ } else {
+ out << " ret.grow = function(by) {\n"
+ << " var old = this.length;\n"
+ << " this.length = this.length + by;\n"
+ << " return old;\n"
+ << " };\n";
+ }
+ out << " ret.set = function(i, func) {\n"
+ << " this[i] = func;\n"
+ << " };\n"
+ << " ret.get = function(i) {\n"
+ << " return this[i];\n"
+ << " };\n"
+ << " return ret;\n"
+ << "}\n\n";
+ }
+
emitSpecialSupport();
}
void Wasm2JSGlue::emitPreEmscripten() {
- out << "function instantiate(asmLibraryArg, wasmMemory, wasmTable) {\n\n";
+ out << "function instantiate(asmLibraryArg, wasmMemory) {\n";
}
void Wasm2JSGlue::emitPreES6() {
@@ -2272,6 +2359,8 @@ void Wasm2JSGlue::emitPreES6() {
ModuleUtils::iterImportedGlobals(
wasm, [&](Global* import) { noteImport(import->module, import->base); });
+ ModuleUtils::iterImportedTables(
+ wasm, [&](Table* import) { noteImport(import->module, import->base); });
ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) {
// The special helpers are emitted in the glue, see code and comments
// below.
@@ -2281,10 +2370,6 @@ void Wasm2JSGlue::emitPreES6() {
noteImport(import->module, import->base);
});
- if (wasm.table.exists && wasm.table.imported()) {
- out << "import { FUNCTION_TABLE } from 'env';\n";
- }
-
out << '\n';
}
@@ -2365,6 +2450,16 @@ void Wasm2JSGlue::emitPostES6() {
}
out << "," << asmangle(import->base.str);
});
+
+ ModuleUtils::iterImportedTables(wasm, [&](Table* import) {
+ // The special helpers are emitted in the glue, see code and comments
+ // below.
+ if (ABI::wasm2js::isHelper(import->base)) {
+ return;
+ }
+ out << "," << asmangle(import->base.str);
+ });
+
out << "},mem" << moduleName.str << ");\n";
if (flags.allowAsserts) {
diff --git a/test/binaryen.js/emit_asmjs.js.txt b/test/binaryen.js/emit_asmjs.js.txt
index 53ec0b847..5404ce4d8 100644
--- a/test/binaryen.js/emit_asmjs.js.txt
+++ b/test/binaryen.js/emit_asmjs.js.txt
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return $0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"main": main
};
diff --git a/test/wasm2js.asserts.js b/test/wasm2js.asserts.js
index 2dc00c859..f2bbe1d81 100644
--- a/test/wasm2js.asserts.js
+++ b/test/wasm2js.asserts.js
@@ -67,7 +67,6 @@ function asmFunc0(global, env, buffer) {
return (x | 0) / (y | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"empty": $0,
"add": $1,
diff --git a/test/wasm2js.traps.js b/test/wasm2js.traps.js
index b93305677..ea9caa66c 100644
--- a/test/wasm2js.traps.js
+++ b/test/wasm2js.traps.js
@@ -67,7 +67,6 @@ function asmFunc0(global, env, buffer) {
return (x | 0) / (y | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"empty": $0,
"add": $1,
diff --git a/test/wasm2js/add_div.2asm.js b/test/wasm2js/add_div.2asm.js
index 43bee69e1..a0b4e7b37 100644
--- a/test/wasm2js/add_div.2asm.js
+++ b/test/wasm2js/add_div.2asm.js
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return (($0 >>> 0) / (100 >>> 0) | 0) + (($0 | 0) / (-100 | 0) | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"foo": foo
};
diff --git a/test/wasm2js/add_div.2asm.js.opt b/test/wasm2js/add_div.2asm.js.opt
index eb313bda1..8ce9da46c 100644
--- a/test/wasm2js/add_div.2asm.js.opt
+++ b/test/wasm2js/add_div.2asm.js.opt
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return (($0 | 0) / -100 | 0) + (($0 >>> 0) / 100 | 0) | 0;
}
- var FUNCTION_TABLE = [];
return {
"foo": foo
};
diff --git a/test/wasm2js/atomic_fence.2asm.js b/test/wasm2js/atomic_fence.2asm.js
index b6694daec..76e784147 100644
--- a/test/wasm2js/atomic_fence.2asm.js
+++ b/test/wasm2js/atomic_fence.2asm.js
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/atomic_fence.2asm.js.opt b/test/wasm2js/atomic_fence.2asm.js.opt
index 50fe46d11..31bb40ca2 100644
--- a/test/wasm2js/atomic_fence.2asm.js.opt
+++ b/test/wasm2js/atomic_fence.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"atomic_fence": $0
};
diff --git a/test/wasm2js/atomics_32.2asm.js b/test/wasm2js/atomics_32.2asm.js
index bbc599423..98e552ca3 100644
--- a/test/wasm2js/atomics_32.2asm.js
+++ b/test/wasm2js/atomics_32.2asm.js
@@ -119,7 +119,6 @@ function asmFunc(global, env, buffer) {
i64toi32_i32$0 = wasm2js_get_stashed_bits() | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/atomics_32.2asm.js.opt b/test/wasm2js/atomics_32.2asm.js.opt
index d3b9cd1bb..8be224284 100644
--- a/test/wasm2js/atomics_32.2asm.js.opt
+++ b/test/wasm2js/atomics_32.2asm.js.opt
@@ -115,7 +115,6 @@ function asmFunc(global, env, buffer) {
wasm2js_get_stashed_bits() | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/base64.2asm.js b/test/wasm2js/base64.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/base64.2asm.js
+++ b/test/wasm2js/base64.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/base64.2asm.js.opt b/test/wasm2js/base64.2asm.js.opt
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/base64.2asm.js.opt
+++ b/test/wasm2js/base64.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/br.2asm.js b/test/wasm2js/br.2asm.js
index d832d45a8..0c88764d3 100644
--- a/test/wasm2js/br.2asm.js
+++ b/test/wasm2js/br.2asm.js
@@ -654,7 +654,6 @@ function asmFunc(global, env, buffer) {
return $0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"type_i32": $1,
"type_i64": $2,
diff --git a/test/wasm2js/br_table.2asm.js b/test/wasm2js/br_table.2asm.js
index ad333a0c2..3dec96a3f 100644
--- a/test/wasm2js/br_table.2asm.js
+++ b/test/wasm2js/br_table.2asm.js
@@ -13351,7 +13351,6 @@ function asmFunc(global, env, buffer) {
return $0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"type_i32": $1,
"type_i64": $2,
diff --git a/test/wasm2js/br_table_hoisting.2asm.js b/test/wasm2js/br_table_hoisting.2asm.js
index 8d5e45440..45eb9cb76 100644
--- a/test/wasm2js/br_table_hoisting.2asm.js
+++ b/test/wasm2js/br_table_hoisting.2asm.js
@@ -176,7 +176,6 @@ function asmFunc(global, env, buffer) {
zed(-10 | 0);
}
- var FUNCTION_TABLE = [];
return {
"foo1": $1,
"foo2": $2,
diff --git a/test/wasm2js/br_table_hoisting.2asm.js.opt b/test/wasm2js/br_table_hoisting.2asm.js.opt
index f28214760..32d9125ae 100644
--- a/test/wasm2js/br_table_hoisting.2asm.js.opt
+++ b/test/wasm2js/br_table_hoisting.2asm.js.opt
@@ -166,7 +166,6 @@ function asmFunc(global, env, buffer) {
zed(-10);
}
- var FUNCTION_TABLE = [];
return {
"foo1": $1,
"foo2": $2,
diff --git a/test/wasm2js/br_table_temp.2asm.js b/test/wasm2js/br_table_temp.2asm.js
index 5287d1084..d2acc92cc 100644
--- a/test/wasm2js/br_table_temp.2asm.js
+++ b/test/wasm2js/br_table_temp.2asm.js
@@ -13197,7 +13197,6 @@ function asmFunc(global, env, buffer) {
return $3_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"type_i32": $1,
"type_i64": $2,
diff --git a/test/wasm2js/br_table_temp.2asm.js.opt b/test/wasm2js/br_table_temp.2asm.js.opt
index f588a3430..79b36521d 100644
--- a/test/wasm2js/br_table_temp.2asm.js.opt
+++ b/test/wasm2js/br_table_temp.2asm.js.opt
@@ -12627,7 +12627,6 @@ function asmFunc(global, env, buffer) {
return $0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"type_i32": dummy,
"type_i64": dummy,
diff --git a/test/wasm2js/br_table_to_loop.2asm.js b/test/wasm2js/br_table_to_loop.2asm.js
index 9aeda2c89..a1bb85f65 100644
--- a/test/wasm2js/br_table_to_loop.2asm.js
+++ b/test/wasm2js/br_table_to_loop.2asm.js
@@ -42,7 +42,6 @@ function asmFunc(global, env, buffer) {
}
}
- var FUNCTION_TABLE = [];
return {
"exp1": $0,
"exp2": $1
diff --git a/test/wasm2js/br_table_to_loop.2asm.js.opt b/test/wasm2js/br_table_to_loop.2asm.js.opt
index 276135375..f6f21127f 100644
--- a/test/wasm2js/br_table_to_loop.2asm.js.opt
+++ b/test/wasm2js/br_table_to_loop.2asm.js.opt
@@ -28,7 +28,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"exp1": $0,
"exp2": $1
diff --git a/test/wasm2js/break-drop.2asm.js b/test/wasm2js/break-drop.2asm.js
index 41a005ec2..cfaffe956 100644
--- a/test/wasm2js/break-drop.2asm.js
+++ b/test/wasm2js/break-drop.2asm.js
@@ -32,7 +32,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"br": $0,
"br_if": $1,
diff --git a/test/wasm2js/bulk-memory.2asm.js b/test/wasm2js/bulk-memory.2asm.js
index 379f919fa..3cf4e0dc9 100644
--- a/test/wasm2js/bulk-memory.2asm.js
+++ b/test/wasm2js/bulk-memory.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
@@ -75,7 +74,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 >> 0] | 0 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -158,7 +156,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 >> 0] | 0 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -241,7 +238,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 >> 0] | 0 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -355,7 +351,6 @@ function asmFunc(global, env, buffer) {
wasm2js_memory_init(1, 0, 0, 0);
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/bulk-memory.2asm.js.opt b/test/wasm2js/bulk-memory.2asm.js.opt
index a4da19a5d..db449cd0e 100644
--- a/test/wasm2js/bulk-memory.2asm.js.opt
+++ b/test/wasm2js/bulk-memory.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
@@ -75,7 +74,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 | 0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -158,7 +156,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 | 0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -241,7 +238,6 @@ function asmFunc(global, env, buffer) {
return HEAPU8[$0_1 | 0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
@@ -331,7 +327,6 @@ function asmFunc(global, env, buffer) {
}
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/comments.2asm.js b/test/wasm2js/comments.2asm.js
index 81100c40c..295e25fc7 100644
--- a/test/wasm2js/comments.2asm.js
+++ b/test/wasm2js/comments.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
@@ -50,7 +49,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/conversions-modified.2asm.js b/test/wasm2js/conversions-modified.2asm.js
index 4829bb49f..718cf3d1f 100644
--- a/test/wasm2js/conversions-modified.2asm.js
+++ b/test/wasm2js/conversions-modified.2asm.js
@@ -597,7 +597,6 @@ function asmFunc(global, env, buffer) {
return $1_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i64_extend_s_i32": legalstub$0,
"i64_extend_u_i32": legalstub$1,
diff --git a/test/wasm2js/conversions-modified.2asm.js.opt b/test/wasm2js/conversions-modified.2asm.js.opt
index 245465e88..c4dddbb84 100644
--- a/test/wasm2js/conversions-modified.2asm.js.opt
+++ b/test/wasm2js/conversions-modified.2asm.js.opt
@@ -188,7 +188,6 @@ function asmFunc(global, env, buffer) {
return $1;
}
- var FUNCTION_TABLE = [];
return {
"i64_extend_s_i32": legalstub$0,
"i64_extend_u_i32": legalstub$1,
diff --git a/test/wasm2js/deterministic.2asm.js b/test/wasm2js/deterministic.2asm.js
index 675f9003c..c03a3e93c 100644
--- a/test/wasm2js/deterministic.2asm.js
+++ b/test/wasm2js/deterministic.2asm.js
@@ -29,7 +29,6 @@ function asmFunc(global, env, buffer) {
return 1 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/deterministic.2asm.js.opt b/test/wasm2js/deterministic.2asm.js.opt
index 4f103eda8..a0272b0db 100644
--- a/test/wasm2js/deterministic.2asm.js.opt
+++ b/test/wasm2js/deterministic.2asm.js.opt
@@ -28,7 +28,6 @@ function asmFunc(global, env, buffer) {
return 1;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/dot_import.2asm.js b/test/wasm2js/dot_import.2asm.js
index 87b9971ea..07a3a51b1 100644
--- a/test/wasm2js/dot_import.2asm.js
+++ b/test/wasm2js/dot_import.2asm.js
@@ -26,7 +26,6 @@ function asmFunc(global, env, buffer) {
base();
}
- var FUNCTION_TABLE = [];
return {
"exported": $0
};
diff --git a/test/wasm2js/dot_import.2asm.js.opt b/test/wasm2js/dot_import.2asm.js.opt
index 87b9971ea..07a3a51b1 100644
--- a/test/wasm2js/dot_import.2asm.js.opt
+++ b/test/wasm2js/dot_import.2asm.js.opt
@@ -26,7 +26,6 @@ function asmFunc(global, env, buffer) {
base();
}
- var FUNCTION_TABLE = [];
return {
"exported": $0
};
diff --git a/test/wasm2js/dynamicLibrary.2asm.js b/test/wasm2js/dynamicLibrary.2asm.js
index 9c58da101..13b52d003 100644
--- a/test/wasm2js/dynamicLibrary.2asm.js
+++ b/test/wasm2js/dynamicLibrary.2asm.js
@@ -1,6 +1,17 @@
import { memoryBase } from 'env';
import { tableBase } from 'env';
+function Table(ret) {
+ // grow method not included; table is not growable
+ ret.set = function(i, func) {
+ this[i] = func;
+ };
+ ret.get = function(i) {
+ return this[i];
+ };
+ return ret;
+}
+
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -37,7 +48,7 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
+ var FUNCTION_TABLE = new Table(new Array(10));
FUNCTION_TABLE[import$tableBase + 0] = foo;
FUNCTION_TABLE[import$tableBase + 1] = bar;
function __wasm_memory_size() {
@@ -45,7 +56,8 @@ function asmFunc(global, env, buffer) {
}
return {
- "baz": baz
+ "baz": baz,
+ "tab": FUNCTION_TABLE
};
}
diff --git a/test/wasm2js/dynamicLibrary.2asm.js.opt b/test/wasm2js/dynamicLibrary.2asm.js.opt
index 71fa441ed..d8f0ec348 100644
--- a/test/wasm2js/dynamicLibrary.2asm.js.opt
+++ b/test/wasm2js/dynamicLibrary.2asm.js.opt
@@ -1,6 +1,17 @@
import { memoryBase } from 'env';
import { tableBase } from 'env';
+function Table(ret) {
+ // grow method not included; table is not growable
+ ret.set = function(i, func) {
+ this[i] = func;
+ };
+ ret.get = function(i) {
+ return this[i];
+ };
+ return ret;
+}
+
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -29,7 +40,7 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
+ var FUNCTION_TABLE = new Table(new Array(10));
FUNCTION_TABLE[import$tableBase + 0] = foo;
FUNCTION_TABLE[import$tableBase + 1] = foo;
function __wasm_memory_size() {
@@ -37,7 +48,8 @@ function asmFunc(global, env, buffer) {
}
return {
- "baz": foo
+ "baz": foo,
+ "tab": FUNCTION_TABLE
};
}
diff --git a/test/wasm2js/empty_export.2asm.js b/test/wasm2js/empty_export.2asm.js
index cc2bb1e8f..46326ad1e 100644
--- a/test/wasm2js/empty_export.2asm.js
+++ b/test/wasm2js/empty_export.2asm.js
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"$": foo
};
diff --git a/test/wasm2js/empty_export.2asm.js.opt b/test/wasm2js/empty_export.2asm.js.opt
index cc2bb1e8f..46326ad1e 100644
--- a/test/wasm2js/empty_export.2asm.js.opt
+++ b/test/wasm2js/empty_export.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"$": foo
};
diff --git a/test/wasm2js/empty_table.2asm.js b/test/wasm2js/empty_table.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/empty_table.2asm.js
+++ b/test/wasm2js/empty_table.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/emscripten-grow-no.2asm.js b/test/wasm2js/emscripten-grow-no.2asm.js
index dde2dd0ce..96c4c195c 100644
--- a/test/wasm2js/emscripten-grow-no.2asm.js
+++ b/test/wasm2js/emscripten-grow-no.2asm.js
@@ -1,5 +1,4 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -26,7 +25,6 @@ function asmFunc(global, env, buffer) {
;
// EMSCRIPTEN_END_FUNCS
;
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/emscripten-grow-no.2asm.js.opt b/test/wasm2js/emscripten-grow-no.2asm.js.opt
index dde2dd0ce..96c4c195c 100644
--- a/test/wasm2js/emscripten-grow-no.2asm.js.opt
+++ b/test/wasm2js/emscripten-grow-no.2asm.js.opt
@@ -1,5 +1,4 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -26,7 +25,6 @@ function asmFunc(global, env, buffer) {
;
// EMSCRIPTEN_END_FUNCS
;
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/emscripten-grow-yes.2asm.js b/test/wasm2js/emscripten-grow-yes.2asm.js
index f42a1b396..5acd1e0fe 100644
--- a/test/wasm2js/emscripten-grow-yes.2asm.js
+++ b/test/wasm2js/emscripten-grow-yes.2asm.js
@@ -1,5 +1,4 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -26,7 +25,6 @@ function asmFunc(global, env, buffer) {
;
// EMSCRIPTEN_END_FUNCS
;
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/emscripten-grow-yes.2asm.js.opt b/test/wasm2js/emscripten-grow-yes.2asm.js.opt
index f42a1b396..5acd1e0fe 100644
--- a/test/wasm2js/emscripten-grow-yes.2asm.js.opt
+++ b/test/wasm2js/emscripten-grow-yes.2asm.js.opt
@@ -1,5 +1,4 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
var HEAP8 = new global.Int8Array(buffer);
@@ -26,7 +25,6 @@ function asmFunc(global, env, buffer) {
;
// EMSCRIPTEN_END_FUNCS
;
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/emscripten.2asm.js b/test/wasm2js/emscripten.2asm.js
index 6f1d19bce..5d6e11b85 100644
--- a/test/wasm2js/emscripten.2asm.js
+++ b/test/wasm2js/emscripten.2asm.js
@@ -1,8 +1,7 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
- var FUNCTION_TABLE = wasmTable;
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
diff --git a/test/wasm2js/emscripten.2asm.js.opt b/test/wasm2js/emscripten.2asm.js.opt
index 2661d3c1d..7cd4868b3 100644
--- a/test/wasm2js/emscripten.2asm.js.opt
+++ b/test/wasm2js/emscripten.2asm.js.opt
@@ -1,8 +1,7 @@
-function instantiate(asmLibraryArg, wasmMemory, wasmTable) {
-
+function instantiate(asmLibraryArg, wasmMemory) {
function asmFunc(global, env, buffer) {
var memory = env.memory;
- var FUNCTION_TABLE = wasmTable;
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
diff --git a/test/wasm2js/endianness.2asm.js b/test/wasm2js/endianness.2asm.js
index 171af7d6c..4de4bb18e 100644
--- a/test/wasm2js/endianness.2asm.js
+++ b/test/wasm2js/endianness.2asm.js
@@ -649,7 +649,6 @@ function asmFunc(global, env, buffer) {
return $2 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/excess_fallthrough.2asm.js b/test/wasm2js/excess_fallthrough.2asm.js
index e8b9352bd..48e67acca 100644
--- a/test/wasm2js/excess_fallthrough.2asm.js
+++ b/test/wasm2js/excess_fallthrough.2asm.js
@@ -42,7 +42,6 @@ function asmFunc(global, env, buffer) {
abort();
}
- var FUNCTION_TABLE = [];
return {
"foo": foo
};
diff --git a/test/wasm2js/excess_fallthrough.2asm.js.opt b/test/wasm2js/excess_fallthrough.2asm.js.opt
index a805107be..a6d2cc75c 100644
--- a/test/wasm2js/excess_fallthrough.2asm.js.opt
+++ b/test/wasm2js/excess_fallthrough.2asm.js.opt
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
abort();
}
- var FUNCTION_TABLE = [];
return {
"foo": foo
};
diff --git a/test/wasm2js/f32.2asm.js b/test/wasm2js/f32.2asm.js
index 20683a5f8..84df7d8ee 100644
--- a/test/wasm2js/f32.2asm.js
+++ b/test/wasm2js/f32.2asm.js
@@ -104,7 +104,6 @@ function asmFunc(global, env, buffer) {
return Math_fround(var$0 < Math_fround(0.0) ? Math_fround(Math_ceil(var$0)) : Math_fround(Math_floor(var$0)));
}
- var FUNCTION_TABLE = [];
return {
"add": $0,
"sub": $1,
diff --git a/test/wasm2js/f32_cmp.2asm.js b/test/wasm2js/f32_cmp.2asm.js
index 0a87b29cf..a798b5297 100644
--- a/test/wasm2js/f32_cmp.2asm.js
+++ b/test/wasm2js/f32_cmp.2asm.js
@@ -56,7 +56,6 @@ function asmFunc(global, env, buffer) {
return x >= y | 0;
}
- var FUNCTION_TABLE = [];
return {
"eq": $0,
"ne": $1,
diff --git a/test/wasm2js/f64_cmp.2asm.js b/test/wasm2js/f64_cmp.2asm.js
index 49d06b986..47a3d0dc9 100644
--- a/test/wasm2js/f64_cmp.2asm.js
+++ b/test/wasm2js/f64_cmp.2asm.js
@@ -56,7 +56,6 @@ function asmFunc(global, env, buffer) {
return x >= y | 0;
}
- var FUNCTION_TABLE = [];
return {
"eq": $0,
"ne": $1,
diff --git a/test/wasm2js/fac.2asm.js b/test/wasm2js/fac.2asm.js
index f66ed55e0..f87a06aa9 100644
--- a/test/wasm2js/fac.2asm.js
+++ b/test/wasm2js/fac.2asm.js
@@ -572,7 +572,6 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"fac_rec": legalstub$0,
"fac_rec_named": legalstub$fac_rec_named,
diff --git a/test/wasm2js/float-ops.2asm.js b/test/wasm2js/float-ops.2asm.js
index 025cbe727..c1b8b29fb 100644
--- a/test/wasm2js/float-ops.2asm.js
+++ b/test/wasm2js/float-ops.2asm.js
@@ -460,7 +460,6 @@ function asmFunc(global, env, buffer) {
return +(+$46(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
}
- var FUNCTION_TABLE = [];
return {
"f32_add": $1,
"f32_sub": $2,
diff --git a/test/wasm2js/float-ops.2asm.js.opt b/test/wasm2js/float-ops.2asm.js.opt
index 17519fc2a..fd740273c 100644
--- a/test/wasm2js/float-ops.2asm.js.opt
+++ b/test/wasm2js/float-ops.2asm.js.opt
@@ -270,7 +270,6 @@ function asmFunc(global, env, buffer) {
return +($0 >>> 0) + +($1_1 >>> 0) * 4294967296.0;
}
- var FUNCTION_TABLE = [];
return {
"f32_add": $1,
"f32_sub": $2,
diff --git a/test/wasm2js/float_literals-modified.2asm.js b/test/wasm2js/float_literals-modified.2asm.js
index d75781a88..18821308e 100644
--- a/test/wasm2js/float_literals-modified.2asm.js
+++ b/test/wasm2js/float_literals-modified.2asm.js
@@ -1091,7 +1091,6 @@ function asmFunc(global, env, buffer) {
return $0_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"f32_nan": $0,
"f32_positive_nan": $1,
diff --git a/test/wasm2js/float_literals-modified.2asm.js.opt b/test/wasm2js/float_literals-modified.2asm.js.opt
index b055b21f4..70040d824 100644
--- a/test/wasm2js/float_literals-modified.2asm.js.opt
+++ b/test/wasm2js/float_literals-modified.2asm.js.opt
@@ -307,7 +307,6 @@ function asmFunc(global, env, buffer) {
return $0_1;
}
- var FUNCTION_TABLE = [];
return {
"f32_nan": $0,
"f32_positive_nan": $0,
diff --git a/test/wasm2js/float_misc.2asm.js b/test/wasm2js/float_misc.2asm.js
index f5b768e61..794d65675 100644
--- a/test/wasm2js/float_misc.2asm.js
+++ b/test/wasm2js/float_misc.2asm.js
@@ -274,7 +274,6 @@ function asmFunc(global, env, buffer) {
return +(var$0 < 0.0 ? Math_ceil(var$0) : Math_floor(var$0));
}
- var FUNCTION_TABLE = [];
return {
"f32_add": $0,
"f32_sub": $1,
diff --git a/test/wasm2js/forward.2asm.js b/test/wasm2js/forward.2asm.js
index 3d3d5bf9b..04fdbf860 100644
--- a/test/wasm2js/forward.2asm.js
+++ b/test/wasm2js/forward.2asm.js
@@ -42,7 +42,6 @@ function asmFunc(global, env, buffer) {
return $10 | 0;
}
- var FUNCTION_TABLE = [];
return {
"even": even,
"odd": odd
diff --git a/test/wasm2js/func_ptrs.2asm.js b/test/wasm2js/func_ptrs.2asm.js
index 97ebf3cb3..927a838b4 100644
--- a/test/wasm2js/func_ptrs.2asm.js
+++ b/test/wasm2js/func_ptrs.2asm.js
@@ -41,7 +41,6 @@ function asmFunc(global, env, buffer) {
print($0 | 0);
}
- var FUNCTION_TABLE = [];
return {
"one": $3,
"two": $4,
diff --git a/test/wasm2js/get-set-local.2asm.js b/test/wasm2js/get-set-local.2asm.js
index fab3a1df5..683853437 100644
--- a/test/wasm2js/get-set-local.2asm.js
+++ b/test/wasm2js/get-set-local.2asm.js
@@ -63,7 +63,6 @@ function asmFunc(global, env, buffer) {
return $1($3 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"check_extend_ui32": legalstub$1
};
diff --git a/test/wasm2js/get-set-local.2asm.js.opt b/test/wasm2js/get-set-local.2asm.js.opt
index 4e87d20ff..99a9be9ab 100644
--- a/test/wasm2js/get-set-local.2asm.js.opt
+++ b/test/wasm2js/get-set-local.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
return !$2 & ($0 | 0) == ($1 | 0);
}
- var FUNCTION_TABLE = [];
return {
"check_extend_ui32": legalstub$1
};
diff --git a/test/wasm2js/get_local.2asm.js b/test/wasm2js/get_local.2asm.js
index ba566a180..2e7b6ff8c 100644
--- a/test/wasm2js/get_local.2asm.js
+++ b/test/wasm2js/get_local.2asm.js
@@ -234,7 +234,6 @@ function asmFunc(global, env, buffer) {
return +(+$9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround($2_1), +$3_1, $4_1 | 0, $5_1 | 0));
}
- var FUNCTION_TABLE = [];
return {
"type_local_i32": $0,
"type_local_i64": legalstub$1,
diff --git a/test/wasm2js/global_i64.2asm.js b/test/wasm2js/global_i64.2asm.js
index 1216d2de4..031db6447 100644
--- a/test/wasm2js/global_i64.2asm.js
+++ b/test/wasm2js/global_i64.2asm.js
@@ -36,7 +36,6 @@ function asmFunc(global, env, buffer) {
f$hi = i64toi32_i32$0;
}
- var FUNCTION_TABLE = [];
return {
"exp": $1
};
diff --git a/test/wasm2js/global_i64.2asm.js.opt b/test/wasm2js/global_i64.2asm.js.opt
index d57e44121..50542fb8c 100644
--- a/test/wasm2js/global_i64.2asm.js.opt
+++ b/test/wasm2js/global_i64.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"exp": $1
};
diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js
index 755b2976b..6e3dc5e63 100644
--- a/test/wasm2js/grow-memory-tricky.2asm.js
+++ b/test/wasm2js/grow-memory-tricky.2asm.js
@@ -36,7 +36,6 @@ function asmFunc(global, env, buffer) {
return __wasm_memory_grow(1 | 0) | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/grow-memory-tricky.2asm.js.opt b/test/wasm2js/grow-memory-tricky.2asm.js.opt
index 40a29264e..d0c474560 100644
--- a/test/wasm2js/grow-memory-tricky.2asm.js.opt
+++ b/test/wasm2js/grow-memory-tricky.2asm.js.opt
@@ -26,7 +26,6 @@ function asmFunc(global, env, buffer) {
return HEAP32[0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/grow_memory.2asm.js b/test/wasm2js/grow_memory.2asm.js
index 3b156ec85..5f8caa925 100644
--- a/test/wasm2js/grow_memory.2asm.js
+++ b/test/wasm2js/grow_memory.2asm.js
@@ -29,7 +29,6 @@ function asmFunc(global, env, buffer) {
return __wasm_memory_size() | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/i32.2asm.js b/test/wasm2js/i32.2asm.js
index 1333020f7..f8ea0161d 100644
--- a/test/wasm2js/i32.2asm.js
+++ b/test/wasm2js/i32.2asm.js
@@ -233,7 +233,6 @@ function asmFunc(global, env, buffer) {
return ((-1 << var$2 | 0) & var$0 | 0) >>> var$2 | 0 | (((-1 >>> var$1 | 0) & var$0 | 0) << var$1 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"add": $0,
"sub": $1,
diff --git a/test/wasm2js/i64-add-sub.2asm.js b/test/wasm2js/i64-add-sub.2asm.js
index 8055e41d9..f792d3b6e 100644
--- a/test/wasm2js/i64-add-sub.2asm.js
+++ b/test/wasm2js/i64-add-sub.2asm.js
@@ -231,7 +231,6 @@ function asmFunc(global, env, buffer) {
return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"check_add_i64": legalstub$1,
"check_sub_i64": legalstub$2
diff --git a/test/wasm2js/i64-add-sub.2asm.js.opt b/test/wasm2js/i64-add-sub.2asm.js.opt
index a1dfd51f4..24b05c224 100644
--- a/test/wasm2js/i64-add-sub.2asm.js.opt
+++ b/test/wasm2js/i64-add-sub.2asm.js.opt
@@ -43,7 +43,6 @@ function asmFunc(global, env, buffer) {
return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1_1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
}
- var FUNCTION_TABLE = [];
return {
"check_add_i64": legalstub$1,
"check_sub_i64": legalstub$2
diff --git a/test/wasm2js/i64-ctz.2asm.js b/test/wasm2js/i64-ctz.2asm.js
index a0ff41079..c90710c8d 100644
--- a/test/wasm2js/i64-ctz.2asm.js
+++ b/test/wasm2js/i64-ctz.2asm.js
@@ -234,7 +234,6 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$5 | 0;
}
- var FUNCTION_TABLE = [];
return {
"a": legalstub$popcnt64,
"b": legalstub$ctz64
diff --git a/test/wasm2js/i64-ctz.2asm.js.opt b/test/wasm2js/i64-ctz.2asm.js.opt
index b651dae29..44876ac37 100644
--- a/test/wasm2js/i64-ctz.2asm.js.opt
+++ b/test/wasm2js/i64-ctz.2asm.js.opt
@@ -76,7 +76,6 @@ function asmFunc(global, env, buffer) {
return $5;
}
- var FUNCTION_TABLE = [];
return {
"a": legalstub$popcnt64,
"b": legalstub$ctz64
diff --git a/test/wasm2js/i64-lowering.2asm.js b/test/wasm2js/i64-lowering.2asm.js
index 095d31fb0..5a8ce4ecb 100644
--- a/test/wasm2js/i64-lowering.2asm.js
+++ b/test/wasm2js/i64-lowering.2asm.js
@@ -782,7 +782,6 @@ function asmFunc(global, env, buffer) {
return $10($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"eq_i64": legalstub$1,
"ne_i64": legalstub$2,
diff --git a/test/wasm2js/i64-lowering.2asm.js.opt b/test/wasm2js/i64-lowering.2asm.js.opt
index f4d940863..f1003e043 100644
--- a/test/wasm2js/i64-lowering.2asm.js.opt
+++ b/test/wasm2js/i64-lowering.2asm.js.opt
@@ -60,7 +60,6 @@ function asmFunc(global, env, buffer) {
return ($1 | 0) == ($3 | 0) & $0 >>> 0 < $2 >>> 0 | $1 >>> 0 < $3 >>> 0;
}
- var FUNCTION_TABLE = [];
return {
"eq_i64": legalstub$1,
"ne_i64": legalstub$2,
diff --git a/test/wasm2js/i64-rotate.2asm.js b/test/wasm2js/i64-rotate.2asm.js
index ea2c97427..a219e72b9 100644
--- a/test/wasm2js/i64-rotate.2asm.js
+++ b/test/wasm2js/i64-rotate.2asm.js
@@ -443,7 +443,6 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$5 | 0;
}
- var FUNCTION_TABLE = [];
return {
"rotl": legalstub$1,
"rotr": legalstub$2
diff --git a/test/wasm2js/i64-rotate.2asm.js.opt b/test/wasm2js/i64-rotate.2asm.js.opt
index a3e2091fc..7b2ff5474 100644
--- a/test/wasm2js/i64-rotate.2asm.js.opt
+++ b/test/wasm2js/i64-rotate.2asm.js.opt
@@ -122,7 +122,6 @@ function asmFunc(global, env, buffer) {
return $0;
}
- var FUNCTION_TABLE = [];
return {
"rotl": legalstub$1,
"rotr": legalstub$2
diff --git a/test/wasm2js/i64-select.2asm.js b/test/wasm2js/i64-select.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/i64-select.2asm.js
+++ b/test/wasm2js/i64-select.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/i64-select.2asm.js.opt b/test/wasm2js/i64-select.2asm.js.opt
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/i64-select.2asm.js.opt
+++ b/test/wasm2js/i64-select.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/i64-shifts.2asm.js b/test/wasm2js/i64-shifts.2asm.js
index 5cbd2af8b..6e91b429b 100644
--- a/test/wasm2js/i64-shifts.2asm.js
+++ b/test/wasm2js/i64-shifts.2asm.js
@@ -248,7 +248,6 @@ function asmFunc(global, env, buffer) {
return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"shl_i64": legalstub$1,
"shr_i64": legalstub$2
diff --git a/test/wasm2js/i64-shifts.2asm.js.opt b/test/wasm2js/i64-shifts.2asm.js.opt
index f5b50d295..4d3bae5a6 100644
--- a/test/wasm2js/i64-shifts.2asm.js.opt
+++ b/test/wasm2js/i64-shifts.2asm.js.opt
@@ -64,7 +64,6 @@ function asmFunc(global, env, buffer) {
return $2($0, $1_1, $2_1, $4, $5);
}
- var FUNCTION_TABLE = [];
return {
"shl_i64": legalstub$1,
"shr_i64": legalstub$2
diff --git a/test/wasm2js/if_unreachable.2asm.js b/test/wasm2js/if_unreachable.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/if_unreachable.2asm.js
+++ b/test/wasm2js/if_unreachable.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/if_unreachable.2asm.js.opt b/test/wasm2js/if_unreachable.2asm.js.opt
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/if_unreachable.2asm.js.opt
+++ b/test/wasm2js/if_unreachable.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/indirect-select.2asm.js b/test/wasm2js/indirect-select.2asm.js
index d190bb082..9ac076ebc 100644
--- a/test/wasm2js/indirect-select.2asm.js
+++ b/test/wasm2js/indirect-select.2asm.js
@@ -1,6 +1,7 @@
-import { FUNCTION_TABLE } from 'env';
+import { table } from 'env';
function asmFunc(global, env, buffer) {
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
@@ -38,6 +39,6 @@ function asmFunc(global, env, buffer) {
}
var memasmFunc = new ArrayBuffer(65536);
-var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc);
+var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },table},memasmFunc);
export var foo_true = retasmFunc.foo_true;
export var foo_false = retasmFunc.foo_false;
diff --git a/test/wasm2js/indirect-select.2asm.js.opt b/test/wasm2js/indirect-select.2asm.js.opt
index 424b91d4a..215e9941f 100644
--- a/test/wasm2js/indirect-select.2asm.js.opt
+++ b/test/wasm2js/indirect-select.2asm.js.opt
@@ -1,6 +1,7 @@
-import { FUNCTION_TABLE } from 'env';
+import { table } from 'env';
function asmFunc(global, env, buffer) {
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
@@ -38,6 +39,6 @@ function asmFunc(global, env, buffer) {
}
var memasmFunc = new ArrayBuffer(65536);
-var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc);
+var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },table},memasmFunc);
export var foo_true = retasmFunc.foo_true;
export var foo_false = retasmFunc.foo_false;
diff --git a/test/wasm2js/int_exprs.2asm.js b/test/wasm2js/int_exprs.2asm.js
index 17267e41e..338ed2de7 100644
--- a/test/wasm2js/int_exprs.2asm.js
+++ b/test/wasm2js/int_exprs.2asm.js
@@ -229,7 +229,6 @@ function asmFunc(global, env, buffer) {
return $3($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_cmp_s_offset": $0,
"i32_no_fold_cmp_u_offset": $1,
@@ -325,7 +324,6 @@ function asmFunc(global, env, buffer) {
return $2 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i64_no_fold_wrap_extend_s": legalstub$0
};
@@ -414,7 +412,6 @@ function asmFunc(global, env, buffer) {
return $2 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i64_no_fold_wrap_extend_u": legalstub$0
};
@@ -612,7 +609,6 @@ function asmFunc(global, env, buffer) {
return $2_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_shl_shr_s": $0,
"i32_no_fold_shl_shr_u": $1,
@@ -816,7 +812,6 @@ function asmFunc(global, env, buffer) {
return $2_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_shr_s_shl": $0,
"i32_no_fold_shr_u_shl": $1,
@@ -1639,7 +1634,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_div_s_mul": $0,
"i32_no_fold_div_u_mul": $1,
@@ -2368,7 +2362,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_div_s_self": $0,
"i32_no_fold_div_u_self": $1,
@@ -3079,7 +3072,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_rem_s_self": $0,
"i32_no_fold_rem_u_self": $1,
@@ -3902,7 +3894,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_mul_div_s": $0,
"i32_no_fold_mul_div_u": $1,
@@ -4569,7 +4560,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_div_s_2": $0,
"i64_no_fold_div_s_2": legalstub$1
@@ -5214,7 +5204,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_rem_s_2": $0,
"i64_no_fold_rem_s_2": legalstub$1
@@ -5939,7 +5928,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_div_s_0": $0,
"i32_div_u_0": $1,
@@ -6668,7 +6656,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_div_s_3": $0,
"i32_div_u_3": $1,
@@ -7397,7 +7384,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_div_s_5": $0,
"i32_div_u_5": $1,
@@ -8126,7 +8112,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_div_s_7": $0,
"i32_div_u_7": $1,
@@ -8837,7 +8822,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_rem_s_3": $0,
"i32_rem_u_3": $1,
@@ -9548,7 +9532,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_rem_s_5": $0,
"i32_rem_u_5": $1,
@@ -10259,7 +10242,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_rem_s_7": $0,
"i32_rem_u_7": $1,
@@ -10926,7 +10908,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_no_fold_div_neg1": $0,
"i64_no_fold_div_neg1": legalstub$1
diff --git a/test/wasm2js/labels.2asm.js b/test/wasm2js/labels.2asm.js
index ffc776123..d4b1c197e 100644
--- a/test/wasm2js/labels.2asm.js
+++ b/test/wasm2js/labels.2asm.js
@@ -327,7 +327,6 @@ function asmFunc(global, env, buffer) {
return $1_1 + $2_1 | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"block": $0,
"loop1": $1,
diff --git a/test/wasm2js/minified-memory.2asm.js b/test/wasm2js/minified-memory.2asm.js
index 2077ef8ab..f3a9eda36 100644
--- a/test/wasm2js/minified-memory.2asm.js
+++ b/test/wasm2js/minified-memory.2asm.js
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return HEAP32[0 >> 2] | 0 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/minified-memory.2asm.js.opt b/test/wasm2js/minified-memory.2asm.js.opt
index e5fc7e54a..2dadad349 100644
--- a/test/wasm2js/minified-memory.2asm.js.opt
+++ b/test/wasm2js/minified-memory.2asm.js.opt
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return HEAP32[0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/minus_minus.2asm.js b/test/wasm2js/minus_minus.2asm.js
index ae0c605d3..d0b68a755 100644
--- a/test/wasm2js/minus_minus.2asm.js
+++ b/test/wasm2js/minus_minus.2asm.js
@@ -28,7 +28,6 @@ function asmFunc(global, env, buffer) {
$0() | 0;
}
- var FUNCTION_TABLE = [];
return {
"func_44_invoker": $1
};
diff --git a/test/wasm2js/minus_minus.2asm.js.opt b/test/wasm2js/minus_minus.2asm.js.opt
index 4f791f380..6b2aec5b0 100644
--- a/test/wasm2js/minus_minus.2asm.js.opt
+++ b/test/wasm2js/minus_minus.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
}
- var FUNCTION_TABLE = [];
return {
"func_44_invoker": $1
};
diff --git a/test/wasm2js/nested-selects.2asm.js b/test/wasm2js/nested-selects.2asm.js
index 7f063a7dc..48090a1e4 100644
--- a/test/wasm2js/nested-selects.2asm.js
+++ b/test/wasm2js/nested-selects.2asm.js
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return (($0 | 0) < (0 | 0) ? -1 : ($0 | 0) > (0 | 0) ? 1 : 0) | 0;
}
- var FUNCTION_TABLE = [];
return {
"sign": $1
};
diff --git a/test/wasm2js/nested-selects.2asm.js.opt b/test/wasm2js/nested-selects.2asm.js.opt
index 9bb06d563..8f35477e3 100644
--- a/test/wasm2js/nested-selects.2asm.js.opt
+++ b/test/wasm2js/nested-selects.2asm.js.opt
@@ -25,7 +25,6 @@ function asmFunc(global, env, buffer) {
return (($0 | 0) < 0 ? -1 : ($0 | 0) > 0) | 0;
}
- var FUNCTION_TABLE = [];
return {
"sign": $1
};
diff --git a/test/wasm2js/ordering.2asm.js b/test/wasm2js/ordering.2asm.js
index f3d879a99..9f452dcd5 100644
--- a/test/wasm2js/ordering.2asm.js
+++ b/test/wasm2js/ordering.2asm.js
@@ -1,6 +1,7 @@
-import { FUNCTION_TABLE } from 'env';
+import { table } from 'env';
function asmFunc(global, env, buffer) {
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
@@ -61,5 +62,5 @@ function asmFunc(global, env, buffer) {
}
var memasmFunc = new ArrayBuffer(65536);
-var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc);
+var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },table},memasmFunc);
export var main = retasmFunc.main;
diff --git a/test/wasm2js/ordering.2asm.js.opt b/test/wasm2js/ordering.2asm.js.opt
index b319fb5ee..11bc171dd 100644
--- a/test/wasm2js/ordering.2asm.js.opt
+++ b/test/wasm2js/ordering.2asm.js.opt
@@ -1,6 +1,7 @@
-import { FUNCTION_TABLE } from 'env';
+import { table } from 'env';
function asmFunc(global, env, buffer) {
+ var FUNCTION_TABLE = env.table;
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
@@ -52,5 +53,5 @@ function asmFunc(global, env, buffer) {
}
var memasmFunc = new ArrayBuffer(65536);
-var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc);
+var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },table},memasmFunc);
export var main = retasmFunc.main;
diff --git a/test/wasm2js/reinterpret.2asm.js b/test/wasm2js/reinterpret.2asm.js
index e237552df..02eaf8469 100644
--- a/test/wasm2js/reinterpret.2asm.js
+++ b/test/wasm2js/reinterpret.2asm.js
@@ -98,7 +98,6 @@ function asmFunc(global, env, buffer) {
return $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_roundtrip": $1,
"i64_roundtrip": legalstub$2
diff --git a/test/wasm2js/reinterpret.2asm.js.opt b/test/wasm2js/reinterpret.2asm.js.opt
index 5015533ba..54f013d25 100644
--- a/test/wasm2js/reinterpret.2asm.js.opt
+++ b/test/wasm2js/reinterpret.2asm.js.opt
@@ -70,7 +70,6 @@ function asmFunc(global, env, buffer) {
return $2($0, $1_1);
}
- var FUNCTION_TABLE = [];
return {
"i32_roundtrip": $1,
"i64_roundtrip": legalstub$2
diff --git a/test/wasm2js/reinterpret_scratch.2asm.js b/test/wasm2js/reinterpret_scratch.2asm.js
index 51c4565f5..032b6f206 100644
--- a/test/wasm2js/reinterpret_scratch.2asm.js
+++ b/test/wasm2js/reinterpret_scratch.2asm.js
@@ -48,7 +48,6 @@ function asmFunc(global, env, buffer) {
return HEAP32[0 >> 2] | 0 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/reinterpret_scratch.2asm.js.opt b/test/wasm2js/reinterpret_scratch.2asm.js.opt
index 03052fa92..2552bbbc8 100644
--- a/test/wasm2js/reinterpret_scratch.2asm.js.opt
+++ b/test/wasm2js/reinterpret_scratch.2asm.js.opt
@@ -43,7 +43,6 @@ function asmFunc(global, env, buffer) {
return HEAP32[0];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/set_local.2asm.js b/test/wasm2js/set_local.2asm.js
index b83b7b9f6..304d2b7a7 100644
--- a/test/wasm2js/set_local.2asm.js
+++ b/test/wasm2js/set_local.2asm.js
@@ -213,7 +213,6 @@ function asmFunc(global, env, buffer) {
return $6_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"type_local_i32": $0,
"type_local_i64": $1,
diff --git a/test/wasm2js/sign_ext.2asm.js b/test/wasm2js/sign_ext.2asm.js
index 02b3c23f9..c1abab59f 100644
--- a/test/wasm2js/sign_ext.2asm.js
+++ b/test/wasm2js/sign_ext.2asm.js
@@ -30,7 +30,6 @@ function asmFunc(global, env, buffer) {
return x << 16 >> 16 | 0;
}
- var FUNCTION_TABLE = [];
return {
"test8": $0,
"test16": $1
diff --git a/test/wasm2js/sign_ext.2asm.js.opt b/test/wasm2js/sign_ext.2asm.js.opt
index d24ab0ca4..9b05256ae 100644
--- a/test/wasm2js/sign_ext.2asm.js.opt
+++ b/test/wasm2js/sign_ext.2asm.js.opt
@@ -30,7 +30,6 @@ function asmFunc(global, env, buffer) {
return $0_1 << 16 >> 16;
}
- var FUNCTION_TABLE = [];
return {
"test8": $0,
"test16": $1
diff --git a/test/wasm2js/stack-modified.2asm.js b/test/wasm2js/stack-modified.2asm.js
index 8070ab4d0..e62f8706f 100644
--- a/test/wasm2js/stack-modified.2asm.js
+++ b/test/wasm2js/stack-modified.2asm.js
@@ -569,7 +569,6 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"fac_expr": legalstub$0,
"fac_stack": legalstub$1,
diff --git a/test/wasm2js/stack-modified.2asm.js.opt b/test/wasm2js/stack-modified.2asm.js.opt
index 2cd863f72..b6c0c61ee 100644
--- a/test/wasm2js/stack-modified.2asm.js.opt
+++ b/test/wasm2js/stack-modified.2asm.js.opt
@@ -66,7 +66,6 @@ function asmFunc(global, env, buffer) {
return $1;
}
- var FUNCTION_TABLE = [];
return {
"fac_expr": legalstub$0,
"fac_stack": legalstub$0,
diff --git a/test/wasm2js/start_func.2asm.js b/test/wasm2js/start_func.2asm.js
index 8e9654c86..309bbb814 100644
--- a/test/wasm2js/start_func.2asm.js
+++ b/test/wasm2js/start_func.2asm.js
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
HEAP32[1 >> 2] = 2;
}
- var FUNCTION_TABLE = [];
foo();
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
diff --git a/test/wasm2js/start_func.2asm.js.opt b/test/wasm2js/start_func.2asm.js.opt
index 97d94a03f..1162e7940 100644
--- a/test/wasm2js/start_func.2asm.js.opt
+++ b/test/wasm2js/start_func.2asm.js.opt
@@ -24,7 +24,6 @@ function asmFunc(global, env, buffer) {
HEAP32[0] = 2;
}
- var FUNCTION_TABLE = [];
foo();
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
diff --git a/test/wasm2js/switch.2asm.js b/test/wasm2js/switch.2asm.js
index 8b6f0223a..91adedb05 100644
--- a/test/wasm2js/switch.2asm.js
+++ b/test/wasm2js/switch.2asm.js
@@ -182,7 +182,6 @@ function asmFunc(global, env, buffer) {
return $2_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"stmt": $0,
"expr": legalstub$1,
diff --git a/test/wasm2js/tee_local.2asm.js b/test/wasm2js/tee_local.2asm.js
index eceeca4d8..c380a863a 100644
--- a/test/wasm2js/tee_local.2asm.js
+++ b/test/wasm2js/tee_local.2asm.js
@@ -319,7 +319,6 @@ function asmFunc(global, env, buffer) {
return +(+$10(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround($2_1), +$3_1, $4_1 | 0, $5_1 | 0));
}
- var FUNCTION_TABLE = [];
return {
"type_local_i32": $0,
"type_local_i64": legalstub$1,
diff --git a/test/wasm2js/traps.2asm.js b/test/wasm2js/traps.2asm.js
index 4b5dbd084..25acefe76 100644
--- a/test/wasm2js/traps.2asm.js
+++ b/test/wasm2js/traps.2asm.js
@@ -728,7 +728,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"no_dce_i32_div_s": $0,
"no_dce_i32_div_u": $1,
@@ -1455,7 +1454,6 @@ function asmFunc(global, env, buffer) {
return 32 | 0;
}
- var FUNCTION_TABLE = [];
return {
"no_dce_i32_rem_s": $0,
"no_dce_i32_rem_u": $1,
@@ -1580,7 +1578,6 @@ function asmFunc(global, env, buffer) {
~~i64toi32_i32$0 >>> 0;
}
- var FUNCTION_TABLE = [];
return {
"no_dce_i32_trunc_f32_s": $0,
"no_dce_i32_trunc_f32_u": $1,
@@ -1701,7 +1698,6 @@ function asmFunc(global, env, buffer) {
+HEAPF64[i >> 3];
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/unaligned.2asm.js b/test/wasm2js/unaligned.2asm.js
index 7bcd22aad..4ea170809 100644
--- a/test/wasm2js/unaligned.2asm.js
+++ b/test/wasm2js/unaligned.2asm.js
@@ -157,7 +157,6 @@ function asmFunc(global, env, buffer) {
return $0_1 | 0;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/unaligned.2asm.js.opt b/test/wasm2js/unaligned.2asm.js.opt
index 45627f215..6f2342b71 100644
--- a/test/wasm2js/unaligned.2asm.js.opt
+++ b/test/wasm2js/unaligned.2asm.js.opt
@@ -110,7 +110,6 @@ function asmFunc(global, env, buffer) {
return $0_1;
}
- var FUNCTION_TABLE = [];
function __wasm_memory_size() {
return buffer.byteLength / 65536 | 0;
}
diff --git a/test/wasm2js/unary-ops.2asm.js b/test/wasm2js/unary-ops.2asm.js
index 9b89164c8..14ce607ba 100644
--- a/test/wasm2js/unary-ops.2asm.js
+++ b/test/wasm2js/unary-ops.2asm.js
@@ -511,7 +511,6 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$5 | 0;
}
- var FUNCTION_TABLE = [];
return {
"i32_popcnt": $1,
"check_popcnt_i64": legalstub$2,
diff --git a/test/wasm2js/unary-ops.2asm.js.opt b/test/wasm2js/unary-ops.2asm.js.opt
index 425e223ff..ef689019b 100644
--- a/test/wasm2js/unary-ops.2asm.js.opt
+++ b/test/wasm2js/unary-ops.2asm.js.opt
@@ -131,7 +131,6 @@ function asmFunc(global, env, buffer) {
return $5;
}
- var FUNCTION_TABLE = [];
return {
"i32_popcnt": $1,
"check_popcnt_i64": legalstub$2,
diff --git a/test/wasm2js/unreachable-get-cycle.2asm.js b/test/wasm2js/unreachable-get-cycle.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/unreachable-get-cycle.2asm.js
+++ b/test/wasm2js/unreachable-get-cycle.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/unreachable-get-cycle.2asm.js.opt b/test/wasm2js/unreachable-get-cycle.2asm.js.opt
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/unreachable-get-cycle.2asm.js.opt
+++ b/test/wasm2js/unreachable-get-cycle.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/unreachable-insts.2asm.js b/test/wasm2js/unreachable-insts.2asm.js
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/unreachable-insts.2asm.js
+++ b/test/wasm2js/unreachable-insts.2asm.js
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/unreachable-insts.2asm.js.opt b/test/wasm2js/unreachable-insts.2asm.js.opt
index e31607d1d..c54b71743 100644
--- a/test/wasm2js/unreachable-insts.2asm.js.opt
+++ b/test/wasm2js/unreachable-insts.2asm.js.opt
@@ -20,7 +20,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/unreachable-later.2asm.js b/test/wasm2js/unreachable-later.2asm.js
index f818fb7b1..7fcf87d54 100644
--- a/test/wasm2js/unreachable-later.2asm.js
+++ b/test/wasm2js/unreachable-later.2asm.js
@@ -66,7 +66,6 @@ function asmFunc(global, env, buffer) {
}
}
- var FUNCTION_TABLE = [];
return {
"func_50": $0
};
diff --git a/test/wasm2js/unreachable-later.2asm.js.opt b/test/wasm2js/unreachable-later.2asm.js.opt
index b0006309f..a7f7e2966 100644
--- a/test/wasm2js/unreachable-later.2asm.js.opt
+++ b/test/wasm2js/unreachable-later.2asm.js.opt
@@ -39,7 +39,6 @@ function asmFunc(global, env, buffer) {
return $0_1 | 0;
}
- var FUNCTION_TABLE = [];
return {
"func_50": $0
};