summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-14 19:02:47 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-12-14 19:02:47 -0800
commit89e0212e5cb1824dc936a5994176de85f259df0b (patch)
treefc27aa4cad9b6d37fae78b4162a4ba6c2374abce
parent76617512d2bbffb6abf0a1b3ba13da433c194425 (diff)
downloadbinaryen-89e0212e5cb1824dc936a5994176de85f259df0b.tar.gz
binaryen-89e0212e5cb1824dc936a5994176de85f259df0b.tar.bz2
binaryen-89e0212e5cb1824dc936a5994176de85f259df0b.zip
start to emit metadata from s2wasm
-rwxr-xr-xauto_update_tests.py2
-rwxr-xr-xcheck.py2
-rw-r--r--src/s2wasm-main.cpp1
-rw-r--r--src/s2wasm.h58
-rw-r--r--src/wasm.h6
-rw-r--r--test/dot_s/asm_const.s23
-rw-r--r--test/dot_s/asm_const.wast18
-rw-r--r--test/dot_s/basics.wast1
-rw-r--r--test/dot_s/call.wast1
-rw-r--r--test/dot_s/cfg-stackify.wast1
-rw-r--r--test/dot_s/comparisons_f32.wast1
-rw-r--r--test/dot_s/comparisons_f64.wast1
-rw-r--r--test/dot_s/comparisons_i32.wast1
-rw-r--r--test/dot_s/comparisons_i64.wast1
-rw-r--r--test/dot_s/conv.wast1
-rw-r--r--test/dot_s/cpus.wast1
-rw-r--r--test/dot_s/dead-vreg.wast1
-rw-r--r--test/dot_s/exit.wast1
-rw-r--r--test/dot_s/f32.wast1
-rw-r--r--test/dot_s/f64.wast1
-rw-r--r--test/dot_s/fast-isel.wast1
-rw-r--r--test/dot_s/frem.wast1
-rw-r--r--test/dot_s/func.wast1
-rw-r--r--test/dot_s/global.wast1
-rw-r--r--test/dot_s/globl.wast1
-rw-r--r--test/dot_s/i32.wast1
-rw-r--r--test/dot_s/i64.wast1
-rw-r--r--test/dot_s/immediates.wast1
-rw-r--r--test/dot_s/import.wast1
-rw-r--r--test/dot_s/legalize.wast1
-rw-r--r--test/dot_s/load-ext.wast1
-rw-r--r--test/dot_s/load-store-i1.wast1
-rw-r--r--test/dot_s/load.wast1
-rw-r--r--test/dot_s/memory-addr32.wast1
-rw-r--r--test/dot_s/memory-addr64.wast1
-rw-r--r--test/dot_s/minimal.wast1
-rw-r--r--test/dot_s/offset-folding.wast1
-rw-r--r--test/dot_s/permute.wast1
-rw-r--r--test/dot_s/phi.wast1
-rw-r--r--test/dot_s/reg-stackify.wast1
-rw-r--r--test/dot_s/relocation.wast1
-rw-r--r--test/dot_s/return-int32.wast1
-rw-r--r--test/dot_s/return-void.wast1
-rw-r--r--test/dot_s/returned.wast1
-rw-r--r--test/dot_s/select.wast1
-rw-r--r--test/dot_s/signext-zeroext.wast1
-rw-r--r--test/dot_s/store-results.wast1
-rw-r--r--test/dot_s/store-trunc.wast1
-rw-r--r--test/dot_s/store.wast1
-rw-r--r--test/dot_s/switch.wast1
-rw-r--r--test/dot_s/unreachable.wast1
-rw-r--r--test/dot_s/unused-argument.wast1
-rw-r--r--test/dot_s/varargs.wast1
53 files changed, 154 insertions, 2 deletions
diff --git a/auto_update_tests.py b/auto_update_tests.py
index 1dee81ea1..b4355329b 100755
--- a/auto_update_tests.py
+++ b/auto_update_tests.py
@@ -32,7 +32,7 @@ for t in sorted(os.listdir('test')):
open(t, 'w').write(actual)
-for s in ['minimal.s', 'basics.s', 'call.s', 'conv.s', 'fast-isel.s', 'i64.s', 'load.s', 'phi.s', 'select.s', 'unreachable.s', 'cpus.s', 'frem.s', 'immediates.s', 'load-store-i1.s', 'reg-stackify.s', 'unused-argument.s', 'comparisons_f32.s', 'dead-vreg.s', 'func.s', 'import.s', 'memory-addr32.s', 'store-results.s', 'varargs.s', 'comparisons_f64.s', 'exit.s', 'global.s', 'memory-addr64.s', 'returned.s', 'store.s', 'comparisons_i32.s', 'f32.s', 'globl.s', 'legalize.s', 'offset-folding.s', 'return-int32.s', 'store-trunc.s', 'comparisons_i64.s', 'f64.s', 'i32.s', 'load-ext.s', 'permute.s', 'return-void.s', 'signext-zeroext.s', 'cfg-stackify.s', 'switch.s', 'relocation.s']: # TODO: 'inline-asm.s'
+for s in ['minimal.s', 'basics.s', 'asm_const.s', 'call.s', 'conv.s', 'fast-isel.s', 'i64.s', 'load.s', 'phi.s', 'select.s', 'unreachable.s', 'cpus.s', 'frem.s', 'immediates.s', 'load-store-i1.s', 'reg-stackify.s', 'unused-argument.s', 'comparisons_f32.s', 'dead-vreg.s', 'func.s', 'import.s', 'memory-addr32.s', 'store-results.s', 'varargs.s', 'comparisons_f64.s', 'exit.s', 'global.s', 'memory-addr64.s', 'returned.s', 'store.s', 'comparisons_i32.s', 'f32.s', 'globl.s', 'legalize.s', 'offset-folding.s', 'return-int32.s', 'store-trunc.s', 'comparisons_i64.s', 'f64.s', 'i32.s', 'load-ext.s', 'permute.s', 'return-void.s', 'signext-zeroext.s', 'cfg-stackify.s', 'switch.s', 'relocation.s']: # TODO: 'inline-asm.s'
print '..', s
wasm = s.replace('.s', '.wast')
full = os.path.join('test', 'dot_s', s)
diff --git a/check.py b/check.py
index f6bc0ecf0..bb21c9dfc 100755
--- a/check.py
+++ b/check.py
@@ -214,7 +214,7 @@ for t in spec_tests:
print '\n[ checking .s testcases... ]\n'
-for s in ['minimal.s', 'basics.s', 'call.s', 'conv.s', 'fast-isel.s', 'i64.s', 'load.s', 'phi.s', 'select.s', 'unreachable.s', 'cpus.s', 'frem.s', 'immediates.s', 'load-store-i1.s', 'reg-stackify.s', 'unused-argument.s', 'comparisons_f32.s', 'dead-vreg.s', 'func.s', 'import.s', 'memory-addr32.s', 'store-results.s', 'varargs.s', 'comparisons_f64.s', 'exit.s', 'global.s', 'memory-addr64.s', 'returned.s', 'store.s', 'comparisons_i32.s', 'f32.s', 'globl.s', 'legalize.s', 'offset-folding.s', 'return-int32.s', 'store-trunc.s', 'comparisons_i64.s', 'f64.s', 'i32.s', 'load-ext.s', 'permute.s', 'return-void.s', 'signext-zeroext.s', 'cfg-stackify.s', 'switch.s', 'relocation.s']: # TODO: 'inline-asm.s'
+for s in ['minimal.s', 'basics.s', 'asm_const.s', 'call.s', 'conv.s', 'fast-isel.s', 'i64.s', 'load.s', 'phi.s', 'select.s', 'unreachable.s', 'cpus.s', 'frem.s', 'immediates.s', 'load-store-i1.s', 'reg-stackify.s', 'unused-argument.s', 'comparisons_f32.s', 'dead-vreg.s', 'func.s', 'import.s', 'memory-addr32.s', 'store-results.s', 'varargs.s', 'comparisons_f64.s', 'exit.s', 'global.s', 'memory-addr64.s', 'returned.s', 'store.s', 'comparisons_i32.s', 'f32.s', 'globl.s', 'legalize.s', 'offset-folding.s', 'return-int32.s', 'store-trunc.s', 'comparisons_i64.s', 'f64.s', 'i32.s', 'load-ext.s', 'permute.s', 'return-void.s', 'signext-zeroext.s', 'cfg-stackify.s', 'switch.s', 'relocation.s']: # TODO: 'inline-asm.s'
print '..', s
wasm = s.replace('.s', '.wast')
full = os.path.join('test', 'dot_s', s)
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp
index 78f158509..694dc4a08 100644
--- a/src/s2wasm-main.cpp
+++ b/src/s2wasm-main.cpp
@@ -37,6 +37,7 @@ int main(int argc, char **argv) {
if (debug) std::cerr << "printing...\n";
std::cout << wasm;
+ s2wasm.printMeta(std::cout);
if (debug) std::cerr << "done.\n";
}
diff --git a/src/s2wasm.h b/src/s2wasm.h
index c21a8b0f8..bdeb78fdd 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -11,6 +11,8 @@ namespace wasm {
extern int debug; // wasm::debug is set in main(), typically from an env var
+cashew::IString EMSCRIPTEN_ASM_CONST("emscripten_asm_const");
+
//
// S2WasmBuilder - parses a .s file into WebAssembly
//
@@ -43,6 +45,8 @@ private:
std::set<Name> implementedFunctions;
+ std::map<size_t, size_t> addressSegments; // address => segment index
+
// utilities
void skipWhitespace() {
@@ -815,6 +819,7 @@ private:
while (nextStatic % align) nextStatic++;
// assign the address, add to memory
staticAddresses[name] = nextStatic;
+ addressSegments[nextStatic] = wasm.memory.segments.size();
wasm.memory.segments.emplace_back(nextStatic, (const char*)&(*raw)[0], seenSize);
nextStatic += seenSize;
}
@@ -844,6 +849,59 @@ private:
(*(int32_t*)(&(*raw)[0])) = staticAddresses[name];
}
}
+
+ template<class C>
+ void printSet(std::ostream& o, C& c) {
+ o << "[";
+ bool first = true;
+ for (auto& item : c) {
+ if (first) first = false;
+ else o << ",";
+ o << '"' << item << '"';
+ }
+ o << "]";
+ }
+
+public:
+
+ // emit metadata for emscripten integration
+ void printMeta(std::ostream& o) {
+ o << "; METADATA: { ";
+ // find asmConst calls, and emit their metadata
+ struct AsmConstWalker : public WasmWalker {
+ S2WasmBuilder* parent;
+ std::ostream& o;
+
+ std::map<std::string, std::set<std::string>> sigsForCode;
+
+ AsmConstWalker(S2WasmBuilder* parent) : parent(parent), o(o) {}
+
+ void visitCallImport(CallImport* curr) override {
+ if (curr->target == EMSCRIPTEN_ASM_CONST) {
+ auto arg = curr->operands[0]->cast<Const>();
+ size_t segmentIndex = parent->addressSegments[arg->value.geti32()];
+ std::string code = parent->wasm.memory.segments[segmentIndex].data;
+ std::string sig = getSig(curr);
+ sigsForCode[code].insert(sig);
+ }
+ }
+ };
+ AsmConstWalker walker(this);
+ walker.startWalk(&wasm);
+ o << "\"asmConsts\": {";
+ bool first = true;
+ for (auto& pair : walker.sigsForCode) {
+ auto& code = pair.first;
+ auto& sigs = pair.second;
+ if (first) first = false;
+ else o << ",";
+ o << '"' << code << '"' << ":";
+ printSet(o, sigs);
+ }
+ o << "}";
+
+ o << " }";
+ }
};
} // namespace wasm
diff --git a/src/wasm.h b/src/wasm.h
index 37aa495db..afc2cf88c 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -298,6 +298,12 @@ public:
return _id == T()._id ? (T*)this : nullptr;
}
+ template<class T>
+ T* cast() {
+ assert(_id == T()._id);
+ return (T*)this;
+ }
+
inline std::ostream& print(std::ostream &o, unsigned indent); // avoid virtual here, for performance
friend std::ostream& operator<<(std::ostream &o, Expression* expression) {
diff --git a/test/dot_s/asm_const.s b/test/dot_s/asm_const.s
new file mode 100644
index 000000000..39df173c4
--- /dev/null
+++ b/test/dot_s/asm_const.s
@@ -0,0 +1,23 @@
+ .text
+ .file "/tmp/tmpkxUaTH/a.out.bc"
+ .globl main
+ .type main,@function
+main: # @main
+ .result i32
+# BB#0:
+ i32.const $push0=, .str
+ call emscripten_asm_const, $pop0
+ i32.const $push1=, 0
+ return $pop1
+func_end0:
+ .size main, func_end0-main
+
+ .type .str,@object # @.str
+ .data
+.str:
+ .asciz "{ Module.print(\"hello, world!\"); }"
+ .size .str, 35
+
+
+ .imports
+ .import emscripten_asm_const "" emscripten_asm_const (param i32)
diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast
new file mode 100644
index 000000000..695c480b3
--- /dev/null
+++ b/test/dot_s/asm_const.wast
@@ -0,0 +1,18 @@
+(module
+ (memory 0 4294967295 (segment 16 "{ Module.print(\"hello, world!\"); }\00"))
+ (import $emscripten_asm_const "env" "emscripten_asm_const")
+ (export "main" $main)
+ (func $main (result i32)
+ (block $fake_return_waka123
+ (block
+ (call_import $emscripten_asm_const
+ (i32.const 16)
+ )
+ (br $fake_return_waka123
+ (i32.const 0)
+ )
+ )
+ )
+ )
+)
+; METADATA: { "asmConsts": {"{ Module.print("hello, world!"); }":["vi"]} } \ No newline at end of file
diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast
index ddae9af5e..1a6af338c 100644
--- a/test/dot_s/basics.wast
+++ b/test/dot_s/basics.wast
@@ -92,3 +92,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/call.wast b/test/dot_s/call.wast
index da72e6a48..527fb34c1 100644
--- a/test/dot_s/call.wast
+++ b/test/dot_s/call.wast
@@ -134,3 +134,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/cfg-stackify.wast b/test/dot_s/cfg-stackify.wast
index 8f583aa90..84440a122 100644
--- a/test/dot_s/cfg-stackify.wast
+++ b/test/dot_s/cfg-stackify.wast
@@ -1085,3 +1085,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_f32.wast b/test/dot_s/comparisons_f32.wast
index 238e7d518..75e3af9e5 100644
--- a/test/dot_s/comparisons_f32.wast
+++ b/test/dot_s/comparisons_f32.wast
@@ -267,3 +267,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_f64.wast b/test/dot_s/comparisons_f64.wast
index 6d0989994..487d1f298 100644
--- a/test/dot_s/comparisons_f64.wast
+++ b/test/dot_s/comparisons_f64.wast
@@ -267,3 +267,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_i32.wast b/test/dot_s/comparisons_i32.wast
index 36b78c85e..84eed3086 100644
--- a/test/dot_s/comparisons_i32.wast
+++ b/test/dot_s/comparisons_i32.wast
@@ -131,3 +131,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_i64.wast b/test/dot_s/comparisons_i64.wast
index 6518261fc..c14dca3c8 100644
--- a/test/dot_s/comparisons_i64.wast
+++ b/test/dot_s/comparisons_i64.wast
@@ -131,3 +131,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/conv.wast b/test/dot_s/conv.wast
index 3030b6283..aced20e91 100644
--- a/test/dot_s/conv.wast
+++ b/test/dot_s/conv.wast
@@ -316,3 +316,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/cpus.wast b/test/dot_s/cpus.wast
index 970969f1f..c867c77fb 100644
--- a/test/dot_s/cpus.wast
+++ b/test/dot_s/cpus.wast
@@ -11,3 +11,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/dead-vreg.wast b/test/dot_s/dead-vreg.wast
index ccba272ef..b5559e1ed 100644
--- a/test/dot_s/dead-vreg.wast
+++ b/test/dot_s/dead-vreg.wast
@@ -111,3 +111,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast
index 423dcfa7b..a79355b67 100644
--- a/test/dot_s/exit.wast
+++ b/test/dot_s/exit.wast
@@ -11,3 +11,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/f32.wast b/test/dot_s/f32.wast
index c51a57de7..21141a396 100644
--- a/test/dot_s/f32.wast
+++ b/test/dot_s/f32.wast
@@ -203,3 +203,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/f64.wast b/test/dot_s/f64.wast
index 093b276af..20866426f 100644
--- a/test/dot_s/f64.wast
+++ b/test/dot_s/f64.wast
@@ -203,3 +203,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/fast-isel.wast b/test/dot_s/fast-isel.wast
index 3254e1013..967ff7776 100644
--- a/test/dot_s/fast-isel.wast
+++ b/test/dot_s/fast-isel.wast
@@ -21,3 +21,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/frem.wast b/test/dot_s/frem.wast
index 5a300f8e3..08622a65a 100644
--- a/test/dot_s/frem.wast
+++ b/test/dot_s/frem.wast
@@ -29,3 +29,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/func.wast b/test/dot_s/func.wast
index b9f62a88c..d0f20d61c 100644
--- a/test/dot_s/func.wast
+++ b/test/dot_s/func.wast
@@ -72,3 +72,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast
index 2ae897647..19122c5ed 100644
--- a/test/dot_s/global.wast
+++ b/test/dot_s/global.wast
@@ -29,3 +29,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/globl.wast b/test/dot_s/globl.wast
index 9c57c8f85..571f3d27e 100644
--- a/test/dot_s/globl.wast
+++ b/test/dot_s/globl.wast
@@ -9,3 +9,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/i32.wast b/test/dot_s/i32.wast
index ae9e51085..827ba8725 100644
--- a/test/dot_s/i32.wast
+++ b/test/dot_s/i32.wast
@@ -230,3 +230,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/i64.wast b/test/dot_s/i64.wast
index 58b849db3..a3befb718 100644
--- a/test/dot_s/i64.wast
+++ b/test/dot_s/i64.wast
@@ -230,3 +230,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/immediates.wast b/test/dot_s/immediates.wast
index e326d3d4a..03d4b5b85 100644
--- a/test/dot_s/immediates.wast
+++ b/test/dot_s/immediates.wast
@@ -241,3 +241,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/import.wast b/test/dot_s/import.wast
index f3760ca81..ce68592f1 100644
--- a/test/dot_s/import.wast
+++ b/test/dot_s/import.wast
@@ -30,3 +30,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/legalize.wast b/test/dot_s/legalize.wast
index c7c6263f1..97ba128ab 100644
--- a/test/dot_s/legalize.wast
+++ b/test/dot_s/legalize.wast
@@ -81,3 +81,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load-ext.wast b/test/dot_s/load-ext.wast
index f640ad7d4..2505adea4 100644
--- a/test/dot_s/load-ext.wast
+++ b/test/dot_s/load-ext.wast
@@ -121,3 +121,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load-store-i1.wast b/test/dot_s/load-store-i1.wast
index f5f89a2b7..c8728f0ce 100644
--- a/test/dot_s/load-store-i1.wast
+++ b/test/dot_s/load-store-i1.wast
@@ -99,3 +99,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load.wast b/test/dot_s/load.wast
index 575641c22..9f367eed6 100644
--- a/test/dot_s/load.wast
+++ b/test/dot_s/load.wast
@@ -61,3 +61,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/memory-addr32.wast b/test/dot_s/memory-addr32.wast
index 7acf89d44..d38b88a75 100644
--- a/test/dot_s/memory-addr32.wast
+++ b/test/dot_s/memory-addr32.wast
@@ -20,3 +20,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/memory-addr64.wast b/test/dot_s/memory-addr64.wast
index c8039090d..e95e08681 100644
--- a/test/dot_s/memory-addr64.wast
+++ b/test/dot_s/memory-addr64.wast
@@ -20,3 +20,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/minimal.wast b/test/dot_s/minimal.wast
index 4a098f657..630873c36 100644
--- a/test/dot_s/minimal.wast
+++ b/test/dot_s/minimal.wast
@@ -11,3 +11,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast
index c20c35565..8cd7dd618 100644
--- a/test/dot_s/offset-folding.wast
+++ b/test/dot_s/offset-folding.wast
@@ -41,3 +41,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/permute.wast b/test/dot_s/permute.wast
index 332d4769b..0f147811f 100644
--- a/test/dot_s/permute.wast
+++ b/test/dot_s/permute.wast
@@ -1,3 +1,4 @@
(module
(memory 0 4294967295 (segment 4 "hE?\8ds\0e7\db[g\8f\955it\c4k\0b\e2\ef\bcld\e0\fd\8c\9e\86&~\d8\94\89+\c8\a4\c2\f2\fb\12\1cej\d99\b7\b3W\c6w\af\ae\caM>\92ub\96\84\b6\b0N\ec;q\11\f7\bf\e31\e6\a7\90\fc\03\e4\aa\d7\cc- \15\83DH\80r\fa\01X\eb:_\00A\cd\e9o`n\ac(\ad\ba0\dcyS#\f4$\"\82\7f}\8e\f6\93L\'\bb\bdZ\ed4\18\f3\c0\cf\ff\a3\f8\07\05\9c\d3\0f\a0\06m%\\\f9^B<\e7\b1\17\98]\0c\dd\c5\f5p\e5\fezJ\ab,F\a5@\08R\85!\b8\1a\ce\d5\04\nI\a6\d1\9f\8a\c9\a9|\97\9aG\be8Y\8b\c1\1b\d4\ea\b9\19\14\9b\9163\d0\1d\d2\df=C\1f\0dc\e1\c7QUv\02\b5aK\b4\tV\c3x\e8\a1\1e\81\de/{\da\d6Pf\10T\f0)\88\16\ee\a8\9d\f1\cbO*\b2\99\132\87.\a2"))
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/phi.wast b/test/dot_s/phi.wast
index 786277d86..896aad133 100644
--- a/test/dot_s/phi.wast
+++ b/test/dot_s/phi.wast
@@ -79,3 +79,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/reg-stackify.wast b/test/dot_s/reg-stackify.wast
index a9f270574..cb9b720d9 100644
--- a/test/dot_s/reg-stackify.wast
+++ b/test/dot_s/reg-stackify.wast
@@ -118,3 +118,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/relocation.wast b/test/dot_s/relocation.wast
index 8949247bc..6a5fb576d 100644
--- a/test/dot_s/relocation.wast
+++ b/test/dot_s/relocation.wast
@@ -14,3 +14,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/return-int32.wast b/test/dot_s/return-int32.wast
index 7e1255781..3cc667d36 100644
--- a/test/dot_s/return-int32.wast
+++ b/test/dot_s/return-int32.wast
@@ -11,3 +11,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/return-void.wast b/test/dot_s/return-void.wast
index 7e5193fa1..54d604547 100644
--- a/test/dot_s/return-void.wast
+++ b/test/dot_s/return-void.wast
@@ -9,3 +9,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/returned.wast b/test/dot_s/returned.wast
index d85228de9..6b1c58735 100644
--- a/test/dot_s/returned.wast
+++ b/test/dot_s/returned.wast
@@ -32,3 +32,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/select.wast b/test/dot_s/select.wast
index d383aa6e1..7c8d32c37 100644
--- a/test/dot_s/select.wast
+++ b/test/dot_s/select.wast
@@ -169,3 +169,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/signext-zeroext.wast b/test/dot_s/signext-zeroext.wast
index 162f5bed7..4db88e8ea 100644
--- a/test/dot_s/signext-zeroext.wast
+++ b/test/dot_s/signext-zeroext.wast
@@ -77,3 +77,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast
index e447dcaac..190e18a92 100644
--- a/test/dot_s/store-results.wast
+++ b/test/dot_s/store-results.wast
@@ -88,3 +88,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store-trunc.wast b/test/dot_s/store-trunc.wast
index 6aabfef98..7496b0ee8 100644
--- a/test/dot_s/store-trunc.wast
+++ b/test/dot_s/store-trunc.wast
@@ -73,3 +73,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store.wast b/test/dot_s/store.wast
index 8acb75f77..ddff6f633 100644
--- a/test/dot_s/store.wast
+++ b/test/dot_s/store.wast
@@ -61,3 +61,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/switch.wast b/test/dot_s/switch.wast
index a34266478..23d276092 100644
--- a/test/dot_s/switch.wast
+++ b/test/dot_s/switch.wast
@@ -97,3 +97,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/unreachable.wast b/test/dot_s/unreachable.wast
index 93063828e..1d402392f 100644
--- a/test/dot_s/unreachable.wast
+++ b/test/dot_s/unreachable.wast
@@ -27,3 +27,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/unused-argument.wast b/test/dot_s/unused-argument.wast
index 2c93e0f52..9b3ba16ab 100644
--- a/test/dot_s/unused-argument.wast
+++ b/test/dot_s/unused-argument.wast
@@ -31,3 +31,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/varargs.wast b/test/dot_s/varargs.wast
index 691b82dee..3b455386e 100644
--- a/test/dot_s/varargs.wast
+++ b/test/dot_s/varargs.wast
@@ -149,3 +149,4 @@
)
)
)
+; METADATA: { "asmConsts": {} } \ No newline at end of file