diff options
author | Sam Clegg <sbc@chromium.org> | 2018-12-14 10:11:47 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-14 10:11:47 -0800 |
commit | 97c2f0eb7cf57cab242b2707c3514bf0d2d7d13e (patch) | |
tree | 0c8a62e7f6f10fa69017d822fe9a2b654a97638b /src | |
parent | 3325a9cc203932e58b6e85dfefe5feb6e72839a4 (diff) | |
download | binaryen-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.cpp | 9 |
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) { |