diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 11 | ||||
-rw-r--r-- | src/binaryen-c.h | 6 |
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. |