diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | src/binaryen-c.cpp | 10 | ||||
-rw-r--r-- | src/binaryen-c.h | 4 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 9 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 2 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 2 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 2 | ||||
-rw-r--r-- | test/example/c-api-relooper-unreachable-if.cpp | 4 | ||||
-rw-r--r-- | test/example/c-api-unused-mem.cpp | 4 | ||||
-rw-r--r-- | test/example/relooper-fuzz.c | 2 | ||||
-rw-r--r-- | test/example/relooper-fuzz1.c | 2 |
11 files changed, 26 insertions, 19 deletions
diff --git a/.gitignore b/.gitignore index c079c832c..4bb4e054b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,7 @@ Win32/ # macOS .DS_Store + +# files related to VS Code +.history +.vscode diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index fbf223535..8e9ea8589 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -1681,15 +1681,16 @@ void BinaryenAddTableImport(BinaryenModuleRef module, const char* internalName, wasm->table.module = externalModuleName; wasm->table.base = externalBaseName; } -void BinaryenAddMemoryImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName) { +void BinaryenAddMemoryImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, uint8_t shared) { auto* wasm = (Module*)module; if (tracing) { - std::cout << " BinaryenAddMemoryImport(the_module, \"" << internalName << "\", \"" << externalModuleName << "\", \"" << externalBaseName << "\");\n"; + std::cout << " BinaryenAddMemoryImport(the_module, \"" << internalName << "\", \"" << externalModuleName << "\", \"" << externalBaseName << "\", " << int(shared) << ");\n"; } wasm->memory.module = externalModuleName; wasm->memory.base = externalBaseName; + wasm->memory.shared = shared; } void BinaryenAddGlobalImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, BinaryenType globalType) { auto* wasm = (Module*)module; @@ -1812,7 +1813,7 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module, BinaryenIndex initial, B // Memory. One per module -void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char* exportName, const char** segments, BinaryenExpressionRef* segmentOffsets, BinaryenIndex* segmentSizes, BinaryenIndex numSegments) { +void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char* exportName, const char** segments, BinaryenExpressionRef* segmentOffsets, BinaryenIndex* segmentSizes, BinaryenIndex numSegments, uint8_t shared) { if (tracing) { std::cout << " {\n"; for (BinaryenIndex i = 0; i < numSegments; i++) { @@ -1846,7 +1847,7 @@ void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, Binaryen std::cout << " };\n"; std::cout << " BinaryenSetMemory(the_module, " << initial << ", " << maximum << ", "; traceNameOrNULL(exportName); - std::cout << ", segments, segmentOffsets, segmentSizes, " << numSegments << ");\n"; + std::cout << ", segments, segmentOffsets, segmentSizes, " << numSegments << ", " << int(shared) << ");\n"; std::cout << " }\n"; } @@ -1854,6 +1855,7 @@ void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, Binaryen wasm->memory.initial = initial; wasm->memory.max = maximum; wasm->memory.exists = true; + wasm->memory.shared = shared; if (exportName) { auto memoryExport = make_unique<Export>(); memoryExport->name = exportName; diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 959044009..6f244e533 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -594,7 +594,7 @@ void BinaryenRemoveFunction(BinaryenModuleRef module, const char* name); void BinaryenAddFunctionImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, BinaryenFunctionTypeRef functionType); void BinaryenAddTableImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName); -void BinaryenAddMemoryImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName); +void BinaryenAddMemoryImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, uint8_t shared); void BinaryenAddGlobalImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, BinaryenType globalType); // Exports @@ -623,7 +623,7 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module, BinaryenIndex initial, B // Each segment has data in segments, a start offset in segmentOffsets, and a size in segmentSizes. // exportName can be NULL -void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char* exportName, const char** segments, BinaryenExpressionRef* segmentOffsets, BinaryenIndex* segmentSizes, BinaryenIndex numSegments); +void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char* exportName, const char** segments, BinaryenExpressionRef* segmentOffsets, BinaryenIndex* segmentSizes, BinaryenIndex numSegments, uint8_t shared); // Start function. One per module diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index fc44c335a..e34273a2a 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -1081,9 +1081,9 @@ Module['Module'] = function(module) { return Module['_BinaryenAddTableImport'](module, strToStack(internalName), strToStack(externalModuleName), strToStack(externalBaseName)); }); }; - this['addMemoryImport'] = function(internalName, externalModuleName, externalBaseName) { + this['addMemoryImport'] = function(internalName, externalModuleName, externalBaseName, shared) { return preserveStack(function() { - return Module['_BinaryenAddMemoryImport'](module, strToStack(internalName), strToStack(externalModuleName), strToStack(externalBaseName)); + return Module['_BinaryenAddMemoryImport'](module, strToStack(internalName), strToStack(externalModuleName), strToStack(externalBaseName), shared); }); }; this['addGlobalImport'] = function(internalName, externalModuleName, externalBaseName, globalType) { @@ -1125,7 +1125,7 @@ Module['Module'] = function(module) { ); }); }; - this['setMemory'] = function(initial, maximum, exportName, segments) { + this['setMemory'] = function(initial, maximum, exportName, segments, shared) { // segments are assumed to be { offset: expression ref, data: array of 8-bit data } if (!segments) segments = []; return preserveStack(function() { @@ -1146,7 +1146,8 @@ Module['Module'] = function(module) { return segment.data.length; }) ), - segments.length + segments.length, + shared ); }); }; diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 8bba56c45..da8f22989 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -1478,7 +1478,7 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} const char* segments[] = { segment0 }; BinaryenExpressionRef segmentOffsets[] = { expressions[256] }; BinaryenIndex segmentSizes[] = { 12 }; - BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1); + BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1, 0); } { BinaryenType paramTypes[] = { 0 }; diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index 25c33956b..0d9aea2ca 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -261,7 +261,7 @@ void test_core() { const char* segments[] = { "hello, world" }; BinaryenExpressionRef segmentOffsets[] = { BinaryenConst(module, BinaryenLiteralInt32(10)) }; BinaryenIndex segmentSizes[] = { 12 }; - BinaryenSetMemory(module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1); + BinaryenSetMemory(module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1, 0); // Start function. One per module diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index 86533339a..f3e114c25 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -1411,7 +1411,7 @@ int main() { const char* segments[] = { segment0 }; BinaryenExpressionRef segmentOffsets[] = { expressions[254] }; BinaryenIndex segmentSizes[] = { 12 }; - BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1); + BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1, 0); } { BinaryenType paramTypes[] = { 0 }; diff --git a/test/example/c-api-relooper-unreachable-if.cpp b/test/example/c-api-relooper-unreachable-if.cpp index dbd50d116..fc3d2d839 100644 --- a/test/example/c-api-relooper-unreachable-if.cpp +++ b/test/example/c-api-relooper-unreachable-if.cpp @@ -16,7 +16,7 @@ int main() { const char* segments[] = { 0 }; BinaryenExpressionRef segmentOffsets[] = { 0 }; BinaryenIndex segmentSizes[] = { 0 }; - BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0); + BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0, 0); } the_relooper = RelooperCreate(); expressions[1] = BinaryenGetLocal(the_module, 0, 1); @@ -347,7 +347,7 @@ int main() { const char* segments[] = { 0 }; BinaryenExpressionRef segmentOffsets[] = { 0 }; BinaryenIndex segmentSizes[] = { 0 }; - BinaryenSetMemory(the_module, 1, 1, NULL, segments, segmentOffsets, segmentSizes, 0); + BinaryenSetMemory(the_module, 1, 1, NULL, segments, segmentOffsets, segmentSizes, 0, 0); } expressions[157] = BinaryenConst(the_module, BinaryenLiteralInt32(65535)); expressions[158] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); diff --git a/test/example/c-api-unused-mem.cpp b/test/example/c-api-unused-mem.cpp index dd8fb2e8f..868e8b795 100644 --- a/test/example/c-api-unused-mem.cpp +++ b/test/example/c-api-unused-mem.cpp @@ -17,7 +17,7 @@ int main() { const char* segments[] = { 0 }; BinaryenExpressionRef segmentOffsets[] = { 0 }; BinaryenIndex segmentSizes[] = { 0 }; - BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0); + BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0, 0); } the_relooper = RelooperCreate(); { @@ -58,7 +58,7 @@ int main() { const char* segments[] = { 0 }; BinaryenExpressionRef segmentOffsets[] = { 0 }; BinaryenIndex segmentSizes[] = { 0 }; - BinaryenSetMemory(the_module, 1024, 1024, NULL, segments, segmentOffsets, segmentSizes, 0); + BinaryenSetMemory(the_module, 1024, 1024, NULL, segments, segmentOffsets, segmentSizes, 0, 0); } expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt32(65535)); expressions[12] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); diff --git a/test/example/relooper-fuzz.c b/test/example/relooper-fuzz.c index 529014139..2b8744d5e 100644 --- a/test/example/relooper-fuzz.c +++ b/test/example/relooper-fuzz.c @@ -256,7 +256,7 @@ int main() { BinaryenAddFunctionImport(module, "print", "spectest", "print", vi); // memory - BinaryenSetMemory(module, 1, 1, "mem", NULL, NULL, NULL, 0); + BinaryenSetMemory(module, 1, 1, "mem", NULL, NULL, NULL, 0, 0); assert(BinaryenModuleValidate(module)); diff --git a/test/example/relooper-fuzz1.c b/test/example/relooper-fuzz1.c index 4aef34fde..0e8c738cb 100644 --- a/test/example/relooper-fuzz1.c +++ b/test/example/relooper-fuzz1.c @@ -328,7 +328,7 @@ int main() { BinaryenAddFunctionImport(module, "print", "spectest", "print", vi); // memory - BinaryenSetMemory(module, 1, 1, "mem", NULL, NULL, NULL, 0); + BinaryenSetMemory(module, 1, 1, "mem", NULL, NULL, NULL, 0, 0); assert(BinaryenModuleValidate(module)); |