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.h3
-rw-r--r--src/js/binaryen.js-post.js5
3 files changed, 10 insertions, 7 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 7b4ee2bc5..2307de3e6 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -3449,7 +3449,8 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module,
BinaryenIndex initial,
BinaryenIndex maximum,
const char** funcNames,
- BinaryenIndex numFuncNames) {
+ BinaryenIndex numFuncNames,
+ BinaryenExpressionRef offset) {
if (tracing) {
std::cout << " {\n";
std::cout << " const char* funcNames[] = { ";
@@ -3461,13 +3462,13 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module,
}
std::cout << " };\n";
std::cout << " BinaryenSetFunctionTable(the_module, " << initial << ", "
- << maximum << ", funcNames, " << numFuncNames << ");\n";
+ << maximum << ", funcNames, " << numFuncNames << ", expressions["
+ << expressions[offset] << "]);\n";
std::cout << " }\n";
}
auto* wasm = (Module*)module;
- Table::Segment segment(
- wasm->allocator.alloc<Const>()->set(Literal(int32_t(0))));
+ Table::Segment segment((Expression*)offset);
for (BinaryenIndex i = 0; i < numFuncNames; i++) {
segment.data.push_back(funcNames[i]);
}
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 3d15a7efe..ab159695a 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -1144,7 +1144,8 @@ BINARYEN_API void BinaryenSetFunctionTable(BinaryenModuleRef module,
BinaryenIndex initial,
BinaryenIndex maximum,
const char** funcNames,
- BinaryenIndex numFuncNames);
+ BinaryenIndex numFuncNames,
+ BinaryenExpressionRef offset);
// Memory. One per module
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 8f49b105c..03e57d3d5 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -2056,11 +2056,12 @@ function wrapModule(module, self) {
return Module['_BinaryenRemoveExport'](module, strToStack(externalName));
});
};
- self['setFunctionTable'] = function(initial, maximum, funcNames) {
+ self['setFunctionTable'] = function(initial, maximum, funcNames, offset) {
return preserveStack(function() {
return Module['_BinaryenSetFunctionTable'](module, initial, maximum,
i32sToStack(funcNames.map(strToStack)),
- funcNames.length
+ funcNames.length,
+ offset || self['i32']['const'](0)
);
});
};