summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-08-16 09:40:59 -0700
committerGitHub <noreply@github.com>2016-08-16 09:40:59 -0700
commite5e3bf39f25ed3a2fb45a9ca1f55d6828d81a3eb (patch)
tree834f67d6ebaf295af0e1d6789bc7f52d120dff33 /src/binaryen-c.cpp
parente268d939b86d8639d014b8036e7664d66b6a32e9 (diff)
parent7851e3a7a3bea679f422116862c5801f1938806d (diff)
downloadbinaryen-e5e3bf39f25ed3a2fb45a9ca1f55d6828d81a3eb.tar.gz
binaryen-e5e3bf39f25ed3a2fb45a9ca1f55d6828d81a3eb.tar.bz2
binaryen-e5e3bf39f25ed3a2fb45a9ca1f55d6828d81a3eb.zip
Merge pull request #668 from WebAssembly/tables_n_memories
Tables and memories
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index b7fc4347a..83c626eb1 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -729,14 +729,17 @@ void BinaryenSetFunctionTable(BinaryenModuleRef module, BinaryenFunctionRef* fun
}
auto* wasm = (Module*)module;
+ Table::Segment segment(wasm->allocator.alloc<Const>()->set(Literal(int32_t(0))));
for (BinaryenIndex i = 0; i < numFuncs; i++) {
- wasm->table.names.push_back(((Function*)funcs[i])->name);
+ segment.data.push_back(((Function*)funcs[i])->name);
}
+ wasm->table.segments.push_back(segment);
+ wasm->table.initial = wasm->table.max = numFuncs;
}
// Memory. One per module
-void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, BinaryenIndex maximum, const char* exportName, const char **segments, BinaryenIndex* 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) {
if (tracing) {
std::cout << " {\n";
for (BinaryenIndex i = 0; i < numSegments; i++) {
@@ -754,10 +757,10 @@ void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, Binaryen
}
if (numSegments == 0) std::cout << "0"; // ensure the array is not empty, otherwise a compiler error on VS
std::cout << " };\n";
- std::cout << " BinaryenIndex segmentOffsets[] = { ";
+ std::cout << " BinaryenExpressionRef segmentOffsets[] = { ";
for (BinaryenIndex i = 0; i < numSegments; i++) {
if (i > 0) std::cout << ", ";
- std::cout << segmentOffsets[i];
+ std::cout << "expressions[" << expressions[segmentOffsets[i]] << "]";
}
if (numSegments == 0) std::cout << "0"; // ensure the array is not empty, otherwise a compiler error on VS
std::cout << " };\n";
@@ -779,7 +782,7 @@ void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, Binaryen
wasm->memory.max = maximum;
if (exportName) wasm->memory.exportName = exportName;
for (BinaryenIndex i = 0; i < numSegments; i++) {
- wasm->memory.segments.emplace_back(segmentOffsets[i], segments[i], segmentSizes[i]);
+ wasm->memory.segments.emplace_back((Expression*)segmentOffsets[i], segments[i], segmentSizes[i]);
}
}