summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp9
-rw-r--r--src/binaryen-c.h2
-rw-r--r--src/js/binaryen.js-post.js9
3 files changed, 11 insertions, 9 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 2d082c088..b8fa9d034 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -1778,7 +1778,7 @@ void BinaryenRemoveExport(BinaryenModuleRef module, const char* externalName) {
// Function table. One per module
-void BinaryenSetFunctionTable(BinaryenModuleRef module, const char** funcNames, BinaryenIndex numFuncNames) {
+void BinaryenSetFunctionTable(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char** funcNames, BinaryenIndex numFuncNames) {
if (tracing) {
std::cout << " {\n";
std::cout << " const char* funcNames[] = { ";
@@ -1787,18 +1787,19 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module, const char** funcNames,
std::cout << "\"" << funcNames[i] << "\"";
}
std::cout << " };\n";
- std::cout << " BinaryenSetFunctionTable(the_module, funcNames, " << numFuncNames << ");\n";
+ std::cout << " BinaryenSetFunctionTable(the_module, " << initial << ", " << maximum << ", funcNames, " << numFuncNames << ");\n";
std::cout << " }\n";
}
auto* wasm = (Module*)module;
- wasm->table.exists = true;
Table::Segment segment(wasm->allocator.alloc<Const>()->set(Literal(int32_t(0))));
for (BinaryenIndex i = 0; i < numFuncNames; i++) {
segment.data.push_back(funcNames[i]);
}
+ wasm->table.initial = initial;
+ wasm->table.max = maximum;
+ wasm->table.exists = true;
wasm->table.segments.push_back(segment);
- wasm->table.initial = wasm->table.max = numFuncNames;
}
// Memory. One per module
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 9a2750353..74eb776ce 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -616,7 +616,7 @@ BinaryenGlobalRef BinaryenAddGlobal(BinaryenModuleRef module, const char* name,
// Function table. One per module
-void BinaryenSetFunctionTable(BinaryenModuleRef module, const char** funcNames, BinaryenIndex numFuncNames);
+void BinaryenSetFunctionTable(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char** funcNames, BinaryenIndex numFuncNames);
// Memory. One per module
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 6b4a0ae16..0222d1b75 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -1112,11 +1112,12 @@ Module['Module'] = function(module) {
return Module['_BinaryenRemoveExport'](module, strToStack(externalName));
});
};
- this['setFunctionTable'] = function(funcNames) {
+ this['setFunctionTable'] = function(initial, maximum, funcNames) {
return preserveStack(function() {
- return Module['_BinaryenSetFunctionTable'](module, i32sToStack(
- funcNames.map(strToStack)
- ), funcNames.length);
+ return Module['_BinaryenSetFunctionTable'](module, initial, maximum,
+ i32sToStack(funcNames.map(strToStack)),
+ funcNames.length
+ );
});
};
this['setMemory'] = function(initial, maximum, exportName, segments) {