summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--src/binaryen-c.cpp10
-rw-r--r--src/binaryen-c.h4
-rw-r--r--src/js/binaryen.js-post.js9
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt2
-rw-r--r--test/example/c-api-kitchen-sink.c2
-rw-r--r--test/example/c-api-kitchen-sink.txt2
-rw-r--r--test/example/c-api-relooper-unreachable-if.cpp4
-rw-r--r--test/example/c-api-unused-mem.cpp4
-rw-r--r--test/example/relooper-fuzz.c2
-rw-r--r--test/example/relooper-fuzz1.c2
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));