summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp11
-rw-r--r--src/binaryen-c.h6
2 files changed, 13 insertions, 4 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index f9a778a68..29e0597d7 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -5851,14 +5851,15 @@ char* BinaryenModuleAllocateAndWriteStackIR(BinaryenModuleRef module,
return output;
}
-BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) {
+BinaryenModuleRef BinaryenModuleReadWithFeatures(char* input,
+ size_t inputSize,
+ BinaryenFeatures features) {
auto* wasm = new Module;
std::vector<char> buffer(false);
buffer.resize(inputSize);
std::copy_n(input, inputSize, buffer.begin());
try {
- // TODO: allow providing features in the C API
- WasmBinaryReader parser(*wasm, FeatureSet::MVP, buffer);
+ WasmBinaryReader parser(*wasm, features, buffer);
parser.read();
} catch (ParseException& p) {
p.dump(std::cerr);
@@ -5867,6 +5868,10 @@ BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) {
return wasm;
}
+BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) {
+ return BinaryenModuleReadWithFeatures(input, inputSize, BinaryenFeatureMVP());
+}
+
void BinaryenModuleInterpret(BinaryenModuleRef module) {
ShellExternalInterface interface;
ModuleRunner instance(*(Module*)module, &interface, {});
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 4ead70ea4..42bd45915 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -3175,10 +3175,14 @@ BINARYEN_API char* BinaryenModuleAllocateAndWriteText(BinaryenModuleRef module);
BINARYEN_API char*
BinaryenModuleAllocateAndWriteStackIR(BinaryenModuleRef module, bool optimize);
-// Deserialize a module from binary form.
+// Deserialize a module from binary form, assuming the MVP feature set.
BINARYEN_API BinaryenModuleRef BinaryenModuleRead(char* input,
size_t inputSize);
+// Deserialize a module from binary form, enabling the given feature set.
+BINARYEN_API BinaryenModuleRef BinaryenModuleReadWithFeatures(
+ char* input, size_t inputSize, BinaryenFeatures featureSet);
+
// Execute a module in the Binaryen interpreter. This will create an instance of
// the module, run it in the interpreter - which means running the start method
// - and then destroying the instance.