summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-05-05 16:48:37 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-05 16:48:37 -0700
commit6ea92a08db051ce3eea56081150caac9432210cf (patch)
tree1c8b1fe5e100c4ab28a6a5a2667cf666b2b5f3dd /src/binaryen-c.cpp
parent727c08faf01da99d57dfe86b3fb0fee9db415f41 (diff)
parentb39f2dd816cfb518a9327e8df4545556b8ad4c30 (diff)
downloadbinaryen-6ea92a08db051ce3eea56081150caac9432210cf.tar.gz
binaryen-6ea92a08db051ce3eea56081150caac9432210cf.tar.bz2
binaryen-6ea92a08db051ce3eea56081150caac9432210cf.zip
Merge pull request #439 from WebAssembly/c-api-more
Validation in C API
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index bbafdf49d..a876c998b 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -23,6 +23,7 @@
#include "wasm.h"
#include "wasm-builder.h"
#include "wasm-printing.h"
+#include "wasm-validator.h"
#include "cfg/Relooper.h"
using namespace wasm;
@@ -193,7 +194,7 @@ BinaryenExpressionRef BinaryenLoop(BinaryenModuleRef module, const char* out, co
if (out && !in) abort();
return Builder(*((Module*)module)).makeLoop(out ? Name(out) : Name(), in ? Name(in) : Name(), (Expression*)body);
}
-BinaryenExpressionRef BinaryenBreak(BinaryenModuleRef module, const char* name, BinaryenExpressionRef value, BinaryenExpressionRef condition) {
+BinaryenExpressionRef BinaryenBreak(BinaryenModuleRef module, const char* name, BinaryenExpressionRef condition, BinaryenExpressionRef value) {
return Builder(*((Module*)module)).makeBreak(name, (Expression*)value, (Expression*)condition);
}
BinaryenExpressionRef BinaryenSwitch(BinaryenModuleRef module, const char **names, BinaryenIndex numNames, const char* defaultName, BinaryenExpressionRef condition, BinaryenExpressionRef value) {
@@ -372,9 +373,9 @@ void BinaryenSetMemory(BinaryenModuleRef module, BinaryenIndex initial, Binaryen
// Start function. One per module
-void BinaryenSetStart(BinaryenModuleRef module, const char* name) {
+void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start) {
auto* wasm = (Module*)module;
- wasm->addStart(name);
+ wasm->addStart(((Function*)start)->name);
}
//
@@ -385,6 +386,11 @@ void BinaryenModulePrint(BinaryenModuleRef module) {
WasmPrinter::printModule((Module*)module);
}
+int BinaryenModuleValidate(BinaryenModuleRef module) {
+ Module* wasm = (Module*)module;
+ return WasmValidator().validate(*wasm) ? 1 : 0;
+}
+
void BinaryenModuleOptimize(BinaryenModuleRef module) {
Module* wasm = (Module*)module;
PassRunner passRunner(wasm);