summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-05-05 14:46:30 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-05 14:52:15 -0700
commitb39f2dd816cfb518a9327e8df4545556b8ad4c30 (patch)
tree51d553fea74338442be2c9ca34d7fb827a572d58 /src/binaryen-c.cpp
parent99576530e6067863486dbbacf39b9a8adb98876e (diff)
downloadbinaryen-b39f2dd816cfb518a9327e8df4545556b8ad4c30.tar.gz
binaryen-b39f2dd816cfb518a9327e8df4545556b8ad4c30.tar.bz2
binaryen-b39f2dd816cfb518a9327e8df4545556b8ad4c30.zip
add validation to the C api, and fix things that uncovered in the C API tests
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);