diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 9 | ||||
-rw-r--r-- | src/binaryen-c.h | 3 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 5 |
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) ); }); }; |