summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-12-14 10:11:47 -0800
committerGitHub <noreply@github.com>2018-12-14 10:11:47 -0800
commit97c2f0eb7cf57cab242b2707c3514bf0d2d7d13e (patch)
tree0c8a62e7f6f10fa69017d822fe9a2b654a97638b /src
parent3325a9cc203932e58b6e85dfefe5feb6e72839a4 (diff)
downloadbinaryen-97c2f0eb7cf57cab242b2707c3514bf0d2d7d13e.tar.gz
binaryen-97c2f0eb7cf57cab242b2707c3514bf0d2d7d13e.tar.bz2
binaryen-97c2f0eb7cf57cab242b2707c3514bf0d2d7d13e.zip
wasm-emscripten-finalize: Don't add a table max if none is present in the input (#1825)
Diffstat (limited to 'src')
-rw-r--r--src/wasm/wasm-emscripten.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp
index 3c78ce866..953a2edc3 100644
--- a/src/wasm/wasm-emscripten.cpp
+++ b/src/wasm/wasm-emscripten.cpp
@@ -331,6 +331,7 @@ void EmscriptenGlueGenerator::generateJSCallThunks(
JSCallWalker walker = getJSCallWalker(wasm);
auto& tableSegmentData = wasm.table.segments[0].data;
+ unsigned numEntriesAdded = 0;
for (std::string sig : walker.indirectlyCallableSigs) {
// Add imports for jsCall_sig (e.g. jsCall_vi).
// Imported jsCall_sig functions have their first parameter as an index to
@@ -371,11 +372,13 @@ void EmscriptenGlueGenerator::generateJSCallThunks(
f->body = call;
wasm.addFunction(f);
tableSegmentData.push_back(f->name);
+ numEntriesAdded++;
}
}
- wasm.table.initial = wasm.table.max =
- wasm.table.segments[0].offset->cast<Const>()->value.getInteger() +
- tableSegmentData.size();
+ wasm.table.initial.addr += numEntriesAdded;
+ if (wasm.table.max != Table::kUnlimitedSize) {
+ wasm.table.max.addr += numEntriesAdded;
+ }
}
std::vector<Address> getSegmentOffsets(Module& wasm) {