summaryrefslogtreecommitdiff
path: root/src/wasm.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-06-26 11:00:02 -0700
committerGitHub <noreply@github.com>2016-06-26 11:00:02 -0700
commit45b358706c86415c5982f9e777fa9e19a33b27a3 (patch)
treed1caa4180c8d0f4a76319fd11f8b18f9f446e6c3 /src/wasm.cpp
parentc410d93d3af9813f889b4011f964d4becf43bc27 (diff)
parent87f3020cf4e666a6eb6620106e48ee042cd2f666 (diff)
downloadbinaryen-45b358706c86415c5982f9e777fa9e19a33b27a3.tar.gz
binaryen-45b358706c86415c5982f9e777fa9e19a33b27a3.tar.bz2
binaryen-45b358706c86415c5982f9e777fa9e19a33b27a3.zip
Merge pull request #602 from WebAssembly/dsl-nice
Use a DSL in OptimizeInstructions
Diffstat (limited to 'src/wasm.cpp')
-rw-r--r--src/wasm.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/wasm.cpp b/src/wasm.cpp
index dd06a8d14..6732f9ca4 100644
--- a/src/wasm.cpp
+++ b/src/wasm.cpp
@@ -20,9 +20,64 @@
namespace wasm {
+// shared constants
+
Name WASM("wasm"),
RETURN_FLOW("*return:)*");
+namespace BinaryConsts {
+namespace Section {
+ const char* Memory = "memory";
+ const char* Signatures = "type";
+ const char* ImportTable = "import";
+ const char* FunctionSignatures = "function";
+ const char* Functions = "code";
+ const char* ExportTable = "export";
+ const char* DataSegments = "data";
+ const char* FunctionTable = "table";
+ const char* Names = "name";
+ const char* Start = "start";
+};
+};
+
+Name GROW_WASM_MEMORY("__growWasmMemory"),
+ NEW_SIZE("newSize"),
+ MODULE("module"),
+ START("start"),
+ FUNC("func"),
+ PARAM("param"),
+ RESULT("result"),
+ MEMORY("memory"),
+ SEGMENT("segment"),
+ EXPORT("export"),
+ IMPORT("import"),
+ TABLE("table"),
+ LOCAL("local"),
+ TYPE("type"),
+ CALL("call"),
+ CALL_IMPORT("call_import"),
+ CALL_INDIRECT("call_indirect"),
+ BLOCK("block"),
+ BR_IF("br_if"),
+ THEN("then"),
+ ELSE("else"),
+ _NAN("NaN"),
+ _INFINITY("Infinity"),
+ NEG_INFINITY("-infinity"),
+ NEG_NAN("-nan"),
+ CASE("case"),
+ BR("br"),
+ FAKE_RETURN("fake_return_waka123"),
+ ASSERT_RETURN("assert_return"),
+ ASSERT_TRAP("assert_trap"),
+ ASSERT_INVALID("assert_invalid"),
+ SPECTEST("spectest"),
+ PRINT("print"),
+ INVOKE("invoke"),
+ EXIT("exit");
+
+// core AST type checking
+
struct TypeSeeker : public PostWalker<TypeSeeker, Visitor<TypeSeeker>> {
Expression* target; // look for this one
Name targetName;