diff options
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | src/binaryen-c.cpp | 5 | ||||
-rw-r--r-- | src/binaryen-c.h | 3 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 4 | ||||
-rw-r--r-- | test/binaryen.js/reloc.js | 2 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 6 | ||||
-rw-r--r-- | test/example/c-api-multiple-tables.c | 4 |
7 files changed, 16 insertions, 11 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c4ec177eb..937061c07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,9 @@ Current Trunk IgnoreImplicitTraps, but can be used safely in more cases. IgnoreImplicitTraps is now deprecated. +- Adds type argument for BinaryenAddTable method (#4107). For the binaryen.js api + this parameter is optional and by default is set to funcref type. + v101 ---- diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 49d485321..35e39142b 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -3512,8 +3512,9 @@ BinaryenExportRef BinaryenGetExportByIndex(BinaryenModuleRef module, BinaryenTableRef BinaryenAddTable(BinaryenModuleRef module, const char* name, BinaryenIndex initial, - BinaryenIndex maximum) { - auto table = Builder::makeTable(name, Type::funcref, initial, maximum); + BinaryenIndex maximum, + BinaryenType tableType) { + auto table = Builder::makeTable(name, Type(tableType), initial, maximum); table->hasExplicitName = true; return ((Module*)module)->addTable(std::move(table)); } diff --git a/src/binaryen-c.h b/src/binaryen-c.h index d18c0e9ad..d46e971b5 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -2156,7 +2156,8 @@ BINARYEN_REF(Table); BINARYEN_API BinaryenTableRef BinaryenAddTable(BinaryenModuleRef module, const char* table, BinaryenIndex initial, - BinaryenIndex maximum); + BinaryenIndex maximum, + BinaryenType tableType); BINARYEN_API void BinaryenRemoveTable(BinaryenModuleRef module, const char* table); BINARYEN_API BinaryenIndex BinaryenGetNumTables(BinaryenModuleRef module); diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 6ecfefee8..645290478 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -2348,8 +2348,8 @@ function wrapModule(module, self = {}) { self['getGlobal'] = function(name) { return preserveStack(() => Module['_BinaryenGetGlobal'](module, strToStack(name))); }; - self['addTable'] = function(table, initial, maximum) { - return preserveStack(() => Module['_BinaryenAddTable'](module, strToStack(table), initial, maximum)); + self['addTable'] = function(table, initial, maximum, type = Module['_BinaryenTypeFuncref']()) { + return preserveStack(() => Module['_BinaryenAddTable'](module, strToStack(table), initial, maximum, type)); } self['getTable'] = function(name) { return preserveStack(() => Module['_BinaryenGetTable'](module, strToStack(name))); diff --git a/test/binaryen.js/reloc.js b/test/binaryen.js/reloc.js index 2b7cc9f90..0235ea413 100644 --- a/test/binaryen.js/reloc.js +++ b/test/binaryen.js/reloc.js @@ -15,7 +15,7 @@ module.setMemory(1, -1, null, [ var func = module.addFunction("func", binaryen.none, binaryen.none, [], module.nop()); module.addGlobalImport("table_base", "env", "table_base", binaryen.i32, false); -module.addTable("0", 1, -1); +module.addTable("0", 1, -1, binaryen.funcref); module.addActiveElementSegment("0", "0", [ "func", "func" ], module.global.get("table_base", binaryen.i32)); assert(module.validate()); console.log(module.emitText()); diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index a13d71cdb..633f4f1ff 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -319,7 +319,7 @@ void test_core() { // Tags BinaryenAddTag(module, "a-tag", BinaryenTypeInt32(), BinaryenTypeNone()); - BinaryenAddTable(module, "tab", 0, 100); + BinaryenAddTable(module, "tab", 0, 100, BinaryenTypeFuncref()); // Exception handling @@ -930,7 +930,7 @@ void test_core() { // Function table. One per module const char* funcNames[] = { BinaryenFunctionGetName(sinker) }; - BinaryenAddTable(module, "0", 1, 1); + BinaryenAddTable(module, "0", 1, 1, BinaryenTypeFuncref()); BinaryenAddActiveElementSegment( module, "0", @@ -1467,7 +1467,7 @@ void test_for_each() { BinaryenFunctionGetName(fns[2]) }; BinaryenExpressionRef constExprRef = BinaryenConst(module, BinaryenLiteralInt32(0)); - BinaryenAddTable(module, "0", 1, 1); + BinaryenAddTable(module, "0", 1, 1, BinaryenTypeFuncref()); BinaryenAddActiveElementSegment( module, "0", "0", funcNames, 3, constExprRef); assert(1 == BinaryenGetNumElementSegments(module)); diff --git a/test/example/c-api-multiple-tables.c b/test/example/c-api-multiple-tables.c index d9d812d3d..f3a9ba8dd 100644 --- a/test/example/c-api-multiple-tables.c +++ b/test/example/c-api-multiple-tables.c @@ -31,7 +31,7 @@ int main() { BinaryenAddFunction(module, "adder", params, results, NULL, 0, add); const char* funcNames[] = {"adder"}; - BinaryenAddTable(module, "tab", 1, 1); + BinaryenAddTable(module, "tab", 1, 1, BinaryenTypeFuncref()); assert(BinaryenGetTable(module, "tab") != NULL); BinaryenAddActiveElementSegment( module, @@ -41,7 +41,7 @@ int main() { 1, BinaryenConst(module, BinaryenLiteralInt32(0))); - BinaryenAddTable(module, "t2", 1, 1); + BinaryenAddTable(module, "t2", 1, 1, BinaryenTypeFuncref()); BinaryenAddActiveElementSegment( module, "t2", |