summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-06-25 12:03:02 -0700
committerGitHub <noreply@github.com>2016-06-25 12:03:02 -0700
commitc410d93d3af9813f889b4011f964d4becf43bc27 (patch)
treee6f3f330d5dd44755ab065a552403c957f96583c /src
parenta88f8f275e068d6cdfb8879dc3bab1fe3201efbc (diff)
downloadbinaryen-c410d93d3af9813f889b4011f964d4becf43bc27.tar.gz
binaryen-c410d93d3af9813f889b4011f964d4becf43bc27.tar.bz2
binaryen-c410d93d3af9813f889b4011f964d4becf43bc27.zip
add c api method to interpret a module, calling its start method (#601)
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp8
-rw-r--r--src/binaryen-c.h5
2 files changed, 13 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 4dff289fb..a9a22ab34 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -23,9 +23,11 @@
#include "wasm.h"
#include "wasm-binary.h"
#include "wasm-builder.h"
+#include "wasm-interpreter.h"
#include "wasm-printing.h"
#include "wasm-validator.h"
#include "cfg/Relooper.h"
+#include "shell-interface.h"
using namespace wasm;
@@ -484,6 +486,12 @@ BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) {
return wasm;
}
+void BinaryenModuleInterpret(BinaryenModuleRef module) {
+ Module* wasm = (Module*)module;
+ ShellExternalInterface interface;
+ ModuleInstance instance(*wasm, &interface);
+}
+
//
// ========== CFG / Relooper ==========
//
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index a587e03ac..7403d0e81 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -344,6 +344,11 @@ size_t BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t output
// Deserialize a module from binary form.
BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize);
+// 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.
+void BinaryenModuleInterpret(BinaryenModuleRef module);
+
//
// ========== CFG / Relooper ==========
//