summaryrefslogtreecommitdiff
path: root/test/binaryen.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2020-01-15 01:00:08 +0100
committerAlon Zakai <azakai@google.com>2020-01-14 16:00:08 -0800
commit5ca79a71b2a2379083093d4d9136b2ae4095dfe8 (patch)
tree80263fb09290b896362a36d3ae062ee6cb64fb8c /test/binaryen.js
parenta43b533b0778a1daf47178a3d3d9e559f3d390ed (diff)
downloadbinaryen-5ca79a71b2a2379083093d4d9136b2ae4095dfe8.tar.gz
binaryen-5ca79a71b2a2379083093d4d9136b2ae4095dfe8.tar.bz2
binaryen-5ca79a71b2a2379083093d4d9136b2ae4095dfe8.zip
Align binaryen.js with the npm package (#2551)
Binaryen.js now uses binaryen (was Binaryen) as its global name to align with the npm package. Also fixes issues with emitting and testing both the JS and Wasm builds.
Diffstat (limited to 'test/binaryen.js')
-rw-r--r--test/binaryen.js/atomics.js158
-rw-r--r--test/binaryen.js/custom-section.js18
-rw-r--r--test/binaryen.js/debug-info.js72
-rw-r--r--test/binaryen.js/emit_asmjs.js18
-rw-r--r--test/binaryen.js/event.js38
-rw-r--r--test/binaryen.js/exception-handling.js92
-rw-r--r--test/binaryen.js/functions.js42
-rw-r--r--test/binaryen.js/global.js46
-rw-r--r--test/binaryen.js/hello-world.js80
-rw-r--r--test/binaryen.js/kitchen-sink.js398
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt88
-rw-r--r--test/binaryen.js/optimize-levels.js90
-rw-r--r--test/binaryen.js/push-pop.js63
-rw-r--r--test/binaryen.js/reloc.js38
-rw-r--r--test/binaryen.js/sieve.js128
-rw-r--r--test/binaryen.js/simd.js12
-rw-r--r--test/binaryen.js/sourcemap.js64
-rw-r--r--test/binaryen.js/stackir.js22
-rw-r--r--test/binaryen.js/validation_errors.js52
19 files changed, 693 insertions, 826 deletions
diff --git a/test/binaryen.js/atomics.js b/test/binaryen.js/atomics.js
index 1374da804..bd4b898bd 100644
--- a/test/binaryen.js/atomics.js
+++ b/test/binaryen.js/atomics.js
@@ -1,95 +1,87 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
var wast = `
(module
(memory $0 (shared 1 1))
)
`;
-function test() {
- var module = Binaryen.parseText(wast);
+var module = binaryen.parseText(wast);
- // i32/i64.atomic.load/store
- module.addFunction("main", Binaryen.none, Binaryen.none, [], module.block("", [
- // i32
- module.i32.atomic.store(0,
- module.i32.const(0),
- module.i32.atomic.load(0,
- module.i32.const(0)
- )
- ),
- // i32 as u8
- module.i32.atomic.store8(0,
- module.i32.const(0),
- module.i32.atomic.load8_u(0,
- module.i32.const(0)
- )
- ),
- // i32 as u16
- module.i32.atomic.store16(0,
+// i32/i64.atomic.load/store
+module.addFunction("main", binaryen.none, binaryen.none, [], module.block("", [
+ // i32
+ module.i32.atomic.store(0,
+ module.i32.const(0),
+ module.i32.atomic.load(0,
+ module.i32.const(0)
+ )
+ ),
+ // i32 as u8
+ module.i32.atomic.store8(0,
+ module.i32.const(0),
+ module.i32.atomic.load8_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i32 as u16
+ module.i32.atomic.store16(0,
+ module.i32.const(0),
+ module.i32.atomic.load16_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64
+ module.i64.atomic.store(0,
+ module.i32.const(0),
+ module.i64.atomic.load(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u8
+ module.i64.atomic.store8(0,
+ module.i32.const(0),
+ module.i64.atomic.load8_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u16
+ module.i64.atomic.store16(0,
+ module.i32.const(0),
+ module.i64.atomic.load16_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u32
+ module.i64.atomic.store32(0,
+ module.i32.const(0),
+ module.i64.atomic.load32_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // wait and notify
+ module.drop(
+ module.i32.atomic.wait(
module.i32.const(0),
- module.i32.atomic.load16_u(0,
- module.i32.const(0)
- )
- ),
- // i64
- module.i64.atomic.store(0,
module.i32.const(0),
- module.i64.atomic.load(0,
- module.i32.const(0)
- )
- ),
- // i64 as u8
- module.i64.atomic.store8(0,
+ module.i64.const(0)
+ )
+ ),
+ module.drop(
+ module.i64.atomic.wait(
module.i32.const(0),
- module.i64.atomic.load8_u(0,
- module.i32.const(0)
- )
- ),
- // i64 as u16
- module.i64.atomic.store16(0,
+ module.i64.const(0),
+ module.i64.const(0)
+ )
+ ),
+ module.drop(
+ module.atomic.notify(
module.i32.const(0),
- module.i64.atomic.load16_u(0,
- module.i32.const(0)
- )
- ),
- // i64 as u32
- module.i64.atomic.store32(0,
- module.i32.const(0),
- module.i64.atomic.load32_u(0,
- module.i32.const(0)
- )
- ),
- // wait and notify
- module.drop(
- module.i32.atomic.wait(
- module.i32.const(0),
- module.i32.const(0),
- module.i64.const(0)
- )
- ),
- module.drop(
- module.i64.atomic.wait(
- module.i32.const(0),
- module.i64.const(0),
- module.i64.const(0)
- )
- ),
- module.drop(
- module.atomic.notify(
- module.i32.const(0),
- module.i32.const(0)
- )
- ),
- // fence
- module.atomic.fence()
- ]));
-
- module.setFeatures(Binaryen.Features.Atomics);
- assert(module.validate());
- console.log(module.emitText());
-}
+ module.i32.const(0)
+ )
+ ),
+ // fence
+ module.atomic.fence()
+]));
-Binaryen.ready.then(test);
+module.setFeatures(binaryen.Features.Atomics);
+assert(module.validate());
+console.log(module.emitText());
diff --git a/test/binaryen.js/custom-section.js b/test/binaryen.js/custom-section.js
index 2ecd39025..404fe4a4a 100644
--- a/test/binaryen.js/custom-section.js
+++ b/test/binaryen.js/custom-section.js
@@ -1,15 +1,7 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
+binaryen.setAPITracing(true);
+var module = new binaryen.Module();
-function test() {
- Binaryen.setAPITracing(true);
- var module = new Binaryen.Module();
+module.addCustomSection("hello", [119, 111, 114, 108, 100]);
- module.addCustomSection("hello", [119, 111, 114, 108, 100]);
-
- assert(module.validate());
- console.log(module.emitText());
-}
-
-Binaryen.ready.then(test);
+assert(module.validate());
+console.log(module.emitText());
diff --git a/test/binaryen.js/debug-info.js b/test/binaryen.js/debug-info.js
index a769d8911..44eca1b07 100644
--- a/test/binaryen.js/debug-info.js
+++ b/test/binaryen.js/debug-info.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
var wast = `
(module
(type $v (func))
@@ -11,41 +7,37 @@ var wast = `
)
`;
-function test() {
- // Use defaults (should not emit debug info)
- console.log("=== default ===");
- console.log("debugInfo=" + Binaryen.getDebugInfo());
- var module = Binaryen.parseText(wast);
- var binary = module.emitBinary();
- module.dispose();
- module = Binaryen.readBinary(binary);
- console.log(module.emitText());
- assert(module.validate());
- module.dispose();
-
- // With debug info
- console.log("=== with debug info ===");
- Binaryen.setDebugInfo(true);
- console.log("debugInfo=" + Binaryen.getDebugInfo());
- module = Binaryen.parseText(wast);
- binary = module.emitBinary();
- module.dispose();
- module = Binaryen.readBinary(binary);
- console.log(module.emitText());
- assert(module.validate());
- module.dispose();
+// Use defaults (should not emit debug info)
+console.log("=== default ===");
+console.log("debugInfo=" + binaryen.getDebugInfo());
+var module = binaryen.parseText(wast);
+var binary = module.emitBinary();
+module.dispose();
+module = binaryen.readBinary(binary);
+console.log(module.emitText());
+assert(module.validate());
+module.dispose();
- // Without debug info
- console.log("=== without debug info ===");
- Binaryen.setDebugInfo(false);
- console.log("debugInfo=" + Binaryen.getDebugInfo());
- module = Binaryen.parseText(wast);
- binary = module.emitBinary();
- module.dispose();
- module = Binaryen.readBinary(binary);
- console.log(module.emitText());
- assert(module.validate());
- module.dispose();
-}
+// With debug info
+console.log("=== with debug info ===");
+binaryen.setDebugInfo(true);
+console.log("debugInfo=" + binaryen.getDebugInfo());
+module = binaryen.parseText(wast);
+binary = module.emitBinary();
+module.dispose();
+module = binaryen.readBinary(binary);
+console.log(module.emitText());
+assert(module.validate());
+module.dispose();
-Binaryen.ready.then(test);
+// Without debug info
+console.log("=== without debug info ===");
+binaryen.setDebugInfo(false);
+console.log("debugInfo=" + binaryen.getDebugInfo());
+module = binaryen.parseText(wast);
+binary = module.emitBinary();
+module.dispose();
+module = binaryen.readBinary(binary);
+console.log(module.emitText());
+assert(module.validate());
+module.dispose();
diff --git a/test/binaryen.js/emit_asmjs.js b/test/binaryen.js/emit_asmjs.js
index 751712592..e7b9afee2 100644
--- a/test/binaryen.js/emit_asmjs.js
+++ b/test/binaryen.js/emit_asmjs.js
@@ -1,17 +1,9 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
+var module = new binaryen.Module();
-function test() {
- var module = new Binaryen.Module();
+module.addFunction("main", binaryen.i32, binaryen.i32, [], module.local.get(0, binaryen.i32));
- module.addFunction("main", Binaryen.i32, Binaryen.i32, [], module.local.get(0, Binaryen.i32));
+module.addFunctionExport("main", "main");
- module.addFunctionExport("main", "main");
+assert(module.validate()); // should validate before calling emitAsmjs
- assert(module.validate()); // should validate before calling emitAsmjs
-
- console.log(module.emitAsmjs());
-}
-
-Binaryen.ready.then(test);
+console.log(module.emitAsmjs());
diff --git a/test/binaryen.js/event.js b/test/binaryen.js/event.js
index f728e9228..73af158f9 100644
--- a/test/binaryen.js/event.js
+++ b/test/binaryen.js/event.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -10,30 +6,26 @@ function cleanInfo(info) {
return ret;
}
-function test() {
- var module = new Binaryen.Module();
- module.setFeatures(Binaryen.Features.ExceptionHandling);
+var module = new binaryen.Module();
+module.setFeatures(binaryen.Features.ExceptionHandling);
- var pairType = Binaryen.createType([Binaryen.i32, Binaryen.f32]);
+var pairType = binaryen.createType([binaryen.i32, binaryen.f32]);
- var event_ = module.addEvent("a-event", 0, Binaryen.i32, Binaryen.none);
+var event_ = module.addEvent("a-event", 0, binaryen.i32, binaryen.none);
- console.log("GetEvent is equal: " + (event_ === module.getEvent("a-event")));
+console.log("GetEvent is equal: " + (event_ === module.getEvent("a-event")));
- var eventInfo = Binaryen.getEventInfo(event_);
- console.log("getEventInfo=" + JSON.stringify(cleanInfo(eventInfo)));
+var eventInfo = binaryen.getEventInfo(event_);
+console.log("getEventInfo=" + JSON.stringify(cleanInfo(eventInfo)));
- module.addEventExport("a-event", "a-event-exp");
- module.addEventImport("a-event-imp", "module", "base", 0, pairType, Binaryen.none);
+module.addEventExport("a-event", "a-event-exp");
+module.addEventImport("a-event-imp", "module", "base", 0, pairType, binaryen.none);
- assert(module.validate());
- console.log(module.emitText());
+assert(module.validate());
+console.log(module.emitText());
- module.removeExport("a-event-exp");
- module.removeEvent("a-event");
-
- assert(module.validate());
- console.log(module.emitText());
-}
+module.removeExport("a-event-exp");
+module.removeEvent("a-event");
-Binaryen.ready.then(test);
+assert(module.validate());
+console.log(module.emitText());
diff --git a/test/binaryen.js/exception-handling.js b/test/binaryen.js/exception-handling.js
index 5ee53667c..b3c9974e7 100644
--- a/test/binaryen.js/exception-handling.js
+++ b/test/binaryen.js/exception-handling.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -13,52 +9,48 @@ function cleanInfo(info) {
}
function stringify(expr) {
- return JSON.stringify(cleanInfo(Binaryen.getExpressionInfo(expr)));
+ return JSON.stringify(cleanInfo(binaryen.getExpressionInfo(expr)));
}
-function test() {
- var module = new Binaryen.Module();
- module.setFeatures(Binaryen.Features.ReferenceTypes |
- Binaryen.Features.ExceptionHandling);
-
- var event_ = module.addEvent("e", 0, Binaryen.i32, Binaryen.none);
-
- // (try
- // (throw $e (i32.const 0))
- // (catch
- // ;; We don't support multi-value yet. Use locals instead.
- // (local.set 0 (exnref.pop))
- // (drop
- // (block $l (result i32)
- // (rethrow
- // (br_on_exn $l $e (local.get 0))
- // )
- // )
- // )
- // )
- // )
- var throw_ = module.throw("e", [module.i32.const(0)]);
- var br_on_exn = module.br_on_exn("l", "e", module.local.get(0, Binaryen.exnref));
- var rethrow = module.rethrow(br_on_exn);
- var try_ = module.try(
- throw_,
- module.block(null, [
- module.local.set(0, module.exnref.pop()),
- module.drop(
- module.block("l", [rethrow], Binaryen.i32)
- )
- ]
+var module = new binaryen.Module();
+module.setFeatures(binaryen.Features.ReferenceTypes |
+ binaryen.Features.ExceptionHandling);
+
+var event_ = module.addEvent("e", 0, binaryen.i32, binaryen.none);
+
+// (try
+// (throw $e (i32.const 0))
+// (catch
+// ;; We don't support multi-value yet. Use locals instead.
+// (local.set 0 (exnref.pop))
+// (drop
+// (block $l (result i32)
+// (rethrow
+// (br_on_exn $l $e (local.get 0))
+// )
+// )
+// )
+// )
+// )
+var throw_ = module.throw("e", [module.i32.const(0)]);
+var br_on_exn = module.br_on_exn("l", "e", module.local.get(0, binaryen.exnref));
+var rethrow = module.rethrow(br_on_exn);
+var try_ = module.try(
+ throw_,
+ module.block(null, [
+ module.local.set(0, module.exnref.pop()),
+ module.drop(
+ module.block("l", [rethrow], binaryen.i32)
)
- );
- var func = module.addFunction("test", Binaryen.none, Binaryen.none, [Binaryen.exnref], try_);
-
- console.log(module.emitText());
- assert(module.validate());
-
- console.log("getExpressionInfo(throw) = " + stringify(throw_));
- console.log("getExpressionInfo(br_on_exn) = " + stringify(br_on_exn));
- console.log("getExpressionInfo(rethrow) = " + stringify(rethrow));
- console.log("getExpressionInfo(try) = " + stringify(try_));
-}
-
-Binaryen.ready.then(test);
+ ]
+ )
+);
+var func = module.addFunction("test", binaryen.none, binaryen.none, [binaryen.exnref], try_);
+
+console.log(module.emitText());
+assert(module.validate());
+
+console.log("getExpressionInfo(throw) = " + stringify(throw_));
+console.log("getExpressionInfo(br_on_exn) = " + stringify(br_on_exn));
+console.log("getExpressionInfo(rethrow) = " + stringify(rethrow));
+console.log("getExpressionInfo(try) = " + stringify(try_));
diff --git a/test/binaryen.js/functions.js b/test/binaryen.js/functions.js
index 0a3aa2243..b50632dfa 100644
--- a/test/binaryen.js/functions.js
+++ b/test/binaryen.js/functions.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -12,31 +8,27 @@ function cleanInfo(info) {
return ret;
}
-function test() {
- var module = new Binaryen.Module();
+var module = new binaryen.Module();
- var func = module.addFunction("a-function", Binaryen.none, Binaryen.i32, [],
- module.i32.add(
- module.i32.const(1),
- module.i32.const(2)
- )
- );
+var func = module.addFunction("a-function", binaryen.none, binaryen.i32, [],
+ module.i32.add(
+ module.i32.const(1),
+ module.i32.const(2)
+ )
+);
- console.log("GetFunction is equal: " + (func === module.getFunction("a-function")));
+console.log("GetFunction is equal: " + (func === module.getFunction("a-function")));
- module.runPassesOnFunction(func, ["precompute"]);
+module.runPassesOnFunction(func, ["precompute"]);
- var funcInfo = Binaryen.getFunctionInfo(func);
- console.log("getFunctionInfo=" + JSON.stringify(cleanInfo(funcInfo)));
- var expInfo = Binaryen.getExpressionInfo(funcInfo.body);
- console.log("getExpressionInfo(body)=" + JSON.stringify(cleanInfo(expInfo)));
- console.log(Binaryen.emitText(funcInfo.body));
+var funcInfo = binaryen.getFunctionInfo(func);
+console.log("getFunctionInfo=" + JSON.stringify(cleanInfo(funcInfo)));
+var expInfo = binaryen.getExpressionInfo(funcInfo.body);
+console.log("getExpressionInfo(body)=" + JSON.stringify(cleanInfo(expInfo)));
+console.log(binaryen.emitText(funcInfo.body));
- module.removeFunction("a-function");
+module.removeFunction("a-function");
- assert(module.validate());
-
- console.log(module.emitText());
-}
+assert(module.validate());
-Binaryen.ready.then(test);
+console.log(module.emitText());
diff --git a/test/binaryen.js/global.js b/test/binaryen.js/global.js
index 48571ef93..b0baf2599 100644
--- a/test/binaryen.js/global.js
+++ b/test/binaryen.js/global.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -12,34 +8,30 @@ function cleanInfo(info) {
return ret;
}
-function test() {
- var module = new Binaryen.Module();
- module.setFeatures(Binaryen.Features.MVP | Binaryen.Features.MutableGlobals);
+var module = new binaryen.Module();
+module.setFeatures(binaryen.Features.MVP | binaryen.Features.MutableGlobals);
- var initExpr = module.i32.const(1);
- var global = module.addGlobal("a-global", Binaryen.i32, false, initExpr);
+var initExpr = module.i32.const(1);
+var global = module.addGlobal("a-global", binaryen.i32, false, initExpr);
- console.log("GetGlobal is equal: " + (global === module.getGlobal("a-global")));
+console.log("GetGlobal is equal: " + (global === module.getGlobal("a-global")));
- var globalInfo = Binaryen.getGlobalInfo(global);
- console.log("getGlobalInfo=" + JSON.stringify(cleanInfo(globalInfo)));
+var globalInfo = binaryen.getGlobalInfo(global);
+console.log("getGlobalInfo=" + JSON.stringify(cleanInfo(globalInfo)));
- var initExpInfo = Binaryen.getExpressionInfo(globalInfo.init);
- console.log("getExpressionInfo(init)=" + JSON.stringify(cleanInfo(initExpInfo)));
- console.log(Binaryen.emitText(globalInfo.init));
+var initExpInfo = binaryen.getExpressionInfo(globalInfo.init);
+console.log("getExpressionInfo(init)=" + JSON.stringify(cleanInfo(initExpInfo)));
+console.log(binaryen.emitText(globalInfo.init));
- module.addGlobalExport("a-global", "a-global-exp");
- module.addGlobalImport("a-global-imp", "module", "base", Binaryen.i32, false);
- module.addGlobalImport("a-mut-global-imp", "module", "base", Binaryen.i32, true);
+module.addGlobalExport("a-global", "a-global-exp");
+module.addGlobalImport("a-global-imp", "module", "base", binaryen.i32, false);
+module.addGlobalImport("a-mut-global-imp", "module", "base", binaryen.i32, true);
- assert(module.validate());
- console.log(module.emitText());
+assert(module.validate());
+console.log(module.emitText());
- module.removeGlobal("a-global");
- module.removeExport("a-global-exp");
-
- assert(module.validate());
- console.log(module.emitText());
-}
+module.removeGlobal("a-global");
+module.removeExport("a-global-exp");
-Binaryen.ready.then(test);
+assert(module.validate());
+console.log(module.emitText());
diff --git a/test/binaryen.js/hello-world.js b/test/binaryen.js/hello-world.js
index d14c97912..d82de6116 100644
--- a/test/binaryen.js/hello-world.js
+++ b/test/binaryen.js/hello-world.js
@@ -1,57 +1,49 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
// "hello world" type example: create a function that adds two i32s and
// returns the result
-function test() {
- // Create a module to work on
- var module = new Binaryen.Module();
-
- // Start to create the function, starting with the contents: Get the 0 and
- // 1 arguments, and add them, then return them
- var left = module.local.get(0, Binaryen.i32);
- var right = module.local.get(1, Binaryen.i32);
- var add = module.i32.add(left, right);
- var ret = module.return(add);
+// Create a module to work on
+var module = new binaryen.Module();
- // Create the add function
- // Note: no additional local variables (that's the [])
- var ii = Binaryen.createType([Binaryen.i32, Binaryen.i32])
- module.addFunction('adder', ii, Binaryen.i32, [], ret);
+// Start to create the function, starting with the contents: Get the 0 and
+// 1 arguments, and add them, then return them
+var left = module.local.get(0, binaryen.i32);
+var right = module.local.get(1, binaryen.i32);
+var add = module.i32.add(left, right);
+var ret = module.return(add);
- // Export the function, so we can call it later (for simplicity we
- // export it as the same name as it has internally)
- module.addFunctionExport('adder', 'adder');
+// Create the add function
+// Note: no additional local variables (that's the [])
+var ii = binaryen.createType([binaryen.i32, binaryen.i32])
+module.addFunction('adder', ii, binaryen.i32, [], ret);
- // Print out the text
- console.log(module.emitText());
+// Export the function, so we can call it later (for simplicity we
+// export it as the same name as it has internally)
+module.addFunctionExport('adder', 'adder');
- // Optimize the module! This removes the 'return', since the
- // output of the add can just fall through
- module.optimize();
+// Print out the text
+console.log(module.emitText());
- // Print out the optimized module's text
- console.log('optimized:\n\n' + module.emitText());
+// Optimize the module! This removes the 'return', since the
+// output of the add can just fall through
+module.optimize();
- // Get the binary in typed array form
- var binary = module.emitBinary();
- console.log('binary size: ' + binary.length);
- console.log();
- assert(module.validate());
+// Print out the optimized module's text
+console.log('optimized:\n\n' + module.emitText());
- // We don't need the Binaryen module anymore, so we can tell it to
- // clean itself up
- module.dispose();
+// Get the binary in typed array form
+var binary = module.emitBinary();
+console.log('binary size: ' + binary.length);
+console.log();
+assert(module.validate());
- // Compile the binary and create an instance
- var wasm = new WebAssembly.Instance(new WebAssembly.Module(binary), {})
- console.log("exports: " + Object.keys(wasm.exports).sort().join(","));
- console.log();
+// We don't need the Binaryen module anymore, so we can tell it to
+// clean itself up
+module.dispose();
- // Call the code!
- console.log('an addition: ' + wasm.exports.adder(40, 2));
-}
+// Compile the binary and create an instance
+var wasm = new WebAssembly.Instance(new WebAssembly.Module(binary), {})
+console.log("exports: " + Object.keys(wasm.exports).sort().join(","));
+console.log();
-Binaryen.ready.then(test);
+// Call the code!
+console.log('an addition: ' + wasm.exports.adder(40, 2));
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index ac101c93d..87e14c3d0 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -1,9 +1,5 @@
// kitchen sink, tests the full API
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -51,113 +47,113 @@ function makeDroppedInt32(x) {
// tests
function test_types() {
- console.log(" // BinaryenTypeNone: " + Binaryen.none);
- console.log(" //", Binaryen.expandType(Binaryen.none));
+ console.log(" // BinaryenTypeNone: " + binaryen.none);
+ console.log(" //", binaryen.expandType(binaryen.none));
- console.log(" // BinaryenTypeUnreachable: " + Binaryen.unreachable);
- console.log(" //", Binaryen.expandType(Binaryen.unreachable));
+ console.log(" // BinaryenTypeUnreachable: " + binaryen.unreachable);
+ console.log(" //", binaryen.expandType(binaryen.unreachable));
- console.log(" // BinaryenTypeInt32: " + Binaryen.i32);
- console.log(" //", Binaryen.expandType(Binaryen.i32));
+ console.log(" // BinaryenTypeInt32: " + binaryen.i32);
+ console.log(" //", binaryen.expandType(binaryen.i32));
- console.log(" // BinaryenTypeInt64: " + Binaryen.i64);
- console.log(" //", Binaryen.expandType(Binaryen.i64));
+ console.log(" // BinaryenTypeInt64: " + binaryen.i64);
+ console.log(" //", binaryen.expandType(binaryen.i64));
- console.log(" // BinaryenTypeFloat32: " + Binaryen.f32);
- console.log(" //", Binaryen.expandType(Binaryen.f32));
+ console.log(" // BinaryenTypeFloat32: " + binaryen.f32);
+ console.log(" //", binaryen.expandType(binaryen.f32));
- console.log(" // BinaryenTypeFloat64: " + Binaryen.f64);
- console.log(" //", Binaryen.expandType(Binaryen.f64));
+ console.log(" // BinaryenTypeFloat64: " + binaryen.f64);
+ console.log(" //", binaryen.expandType(binaryen.f64));
- console.log(" // BinaryenTypeVec128: " + Binaryen.v128);
- console.log(" //", Binaryen.expandType(Binaryen.v128));
+ console.log(" // BinaryenTypeVec128: " + binaryen.v128);
+ console.log(" //", binaryen.expandType(binaryen.v128));
- console.log(" // BinaryenTypeAnyref: " + Binaryen.anyref);
- console.log(" //", Binaryen.expandType(Binaryen.anyref));
+ console.log(" // BinaryenTypeAnyref: " + binaryen.anyref);
+ console.log(" //", binaryen.expandType(binaryen.anyref));
- console.log(" // BinaryenTypeExnref: " + Binaryen.exnref);
- console.log(" //", Binaryen.expandType(Binaryen.exnref));
+ console.log(" // BinaryenTypeExnref: " + binaryen.exnref);
+ console.log(" //", binaryen.expandType(binaryen.exnref));
- console.log(" // BinaryenTypeAuto: " + Binaryen.auto);
+ console.log(" // BinaryenTypeAuto: " + binaryen.auto);
- var i32_pair = Binaryen.createType([Binaryen.i32, Binaryen.i32]);
- console.log(" //", i32_pair, Binaryen.expandType(i32_pair));
+ var i32_pair = binaryen.createType([binaryen.i32, binaryen.i32]);
+ console.log(" //", i32_pair, binaryen.expandType(i32_pair));
- var duplicate_pair = Binaryen.createType([Binaryen.i32, Binaryen.i32]);
- console.log(" //", duplicate_pair, Binaryen.expandType(duplicate_pair));
+ var duplicate_pair = binaryen.createType([binaryen.i32, binaryen.i32]);
+ console.log(" //", duplicate_pair, binaryen.expandType(duplicate_pair));
- var f32_pair = Binaryen.createType([Binaryen.f32, Binaryen.f32]);
- console.log(" //", f32_pair, Binaryen.expandType(f32_pair));
+ var f32_pair = binaryen.createType([binaryen.f32, binaryen.f32]);
+ console.log(" //", f32_pair, binaryen.expandType(f32_pair));
}
function test_features() {
- console.log("Binaryen.Features.MVP: " + Binaryen.Features.MVP);
- console.log("Binaryen.Features.Atomics: " + Binaryen.Features.Atomics);
- console.log("Binaryen.Features.BulkMemory: " + Binaryen.Features.BulkMemory);
- console.log("Binaryen.Features.MutableGlobals: " + Binaryen.Features.MutableGlobals);
- console.log("Binaryen.Features.NontrappingFPToInt: " + Binaryen.Features.NontrappingFPToInt);
- console.log("Binaryen.Features.SignExt: " + Binaryen.Features.SignExt);
- console.log("Binaryen.Features.SIMD128: " + Binaryen.Features.SIMD128);
- console.log("Binaryen.Features.ExceptionHandling: " + Binaryen.Features.ExceptionHandling);
- console.log("Binaryen.Features.TailCall: " + Binaryen.Features.TailCall);
- console.log("Binaryen.Features.ReferenceTypes: " + Binaryen.Features.ReferenceTypes);
- console.log("Binaryen.Features.All: " + Binaryen.Features.All);
+ console.log("Features.MVP: " + binaryen.Features.MVP);
+ console.log("Features.Atomics: " + binaryen.Features.Atomics);
+ console.log("Features.BulkMemory: " + binaryen.Features.BulkMemory);
+ console.log("Features.MutableGlobals: " + binaryen.Features.MutableGlobals);
+ console.log("Features.NontrappingFPToInt: " + binaryen.Features.NontrappingFPToInt);
+ console.log("Features.SignExt: " + binaryen.Features.SignExt);
+ console.log("Features.SIMD128: " + binaryen.Features.SIMD128);
+ console.log("Features.ExceptionHandling: " + binaryen.Features.ExceptionHandling);
+ console.log("Features.TailCall: " + binaryen.Features.TailCall);
+ console.log("Features.ReferenceTypes: " + binaryen.Features.ReferenceTypes);
+ console.log("Features.All: " + binaryen.Features.All);
}
function test_ids() {
- console.log("BinaryenInvalidId: " + Binaryen.InvalidId);
- console.log("BinaryenBlockId: " + Binaryen.BlockId);
- console.log("BinaryenIfId: " + Binaryen.IfId);
- console.log("BinaryenLoopId: " + Binaryen.LoopId);
- console.log("BinaryenBreakId: " + Binaryen.BreakId);
- console.log("BinaryenSwitchId: " + Binaryen.SwitchId);
- console.log("BinaryenCallId: " + Binaryen.CallId);
- console.log("BinaryenCallIndirectId: " + Binaryen.CallIndirectId);
- console.log("BinaryenLocalGetId: " + Binaryen.LocalGetId);
- console.log("BinaryenLocalSetId: " + Binaryen.LocalSetId);
- console.log("BinaryenGlobalGetId: " + Binaryen.GlobalGetId);
- console.log("BinaryenGlobalSetId: " + Binaryen.GlobalSetId);
- console.log("BinaryenLoadId: " + Binaryen.LoadId);
- console.log("BinaryenStoreId: " + Binaryen.StoreId);
- console.log("BinaryenConstId: " + Binaryen.ConstId);
- console.log("BinaryenUnaryId: " + Binaryen.UnaryId);
- console.log("BinaryenBinaryId: " + Binaryen.BinaryId);
- console.log("BinaryenSelectId: " + Binaryen.SelectId);
- console.log("BinaryenDropId: " + Binaryen.DropId);
- console.log("BinaryenReturnId: " + Binaryen.ReturnId);
- console.log("BinaryenHostId: " + Binaryen.HostId);
- console.log("BinaryenNopId: " + Binaryen.NopId);
- console.log("BinaryenUnreachableId: " + Binaryen.UnreachableId);
- console.log("BinaryenAtomicCmpxchgId: " + Binaryen.AtomicCmpxchgId);
- console.log("BinaryenAtomicRMWId: " + Binaryen.AtomicRMWId);
- console.log("BinaryenAtomicWaitId: " + Binaryen.AtomicWaitId);
- console.log("BinaryenAtomicNotifyId: " + Binaryen.AtomicNotifyId);
- console.log("BinaryenSIMDExtractId: " + Binaryen.SIMDExtractId);
- console.log("BinaryenSIMDReplaceId: " + Binaryen.SIMDReplaceId);
- console.log("BinaryenSIMDShuffleId: " + Binaryen.SIMDShuffleId);
- console.log("BinaryenSIMDTernaryId: " + Binaryen.SIMDTernaryId);
- console.log("BinaryenSIMDShiftId: " + Binaryen.SIMDShiftId);
- console.log("BinaryenSIMDLoadId: " + Binaryen.SIMDLoadId);
- console.log("MemoryInitId: " + Binaryen.MemoryInitId);
- console.log("DataDropId: " + Binaryen.DataDropId);
- console.log("MemoryCopyId: " + Binaryen.MemoryCopyId);
- console.log("MemoryFillId: " + Binaryen.MemoryFillId);
- console.log("TryId: " + Binaryen.TryId);
- console.log("ThrowId: " + Binaryen.ThrowId);
- console.log("RethrowId: " + Binaryen.RethrowId);
- console.log("BrOnExnId: " + Binaryen.BrOnExnId);
- console.log("PushId: " + Binaryen.PushId);
- console.log("PopId: " + Binaryen.PopId);
+ console.log("InvalidId: " + binaryen.InvalidId);
+ console.log("BlockId: " + binaryen.BlockId);
+ console.log("IfId: " + binaryen.IfId);
+ console.log("LoopId: " + binaryen.LoopId);
+ console.log("BreakId: " + binaryen.BreakId);
+ console.log("SwitchId: " + binaryen.SwitchId);
+ console.log("CallId: " + binaryen.CallId);
+ console.log("CallIndirectId: " + binaryen.CallIndirectId);
+ console.log("LocalGetId: " + binaryen.LocalGetId);
+ console.log("LocalSetId: " + binaryen.LocalSetId);
+ console.log("GlobalGetId: " + binaryen.GlobalGetId);
+ console.log("GlobalSetId: " + binaryen.GlobalSetId);
+ console.log("LoadId: " + binaryen.LoadId);
+ console.log("StoreId: " + binaryen.StoreId);
+ console.log("ConstId: " + binaryen.ConstId);
+ console.log("UnaryId: " + binaryen.UnaryId);
+ console.log("BinaryId: " + binaryen.BinaryId);
+ console.log("SelectId: " + binaryen.SelectId);
+ console.log("DropId: " + binaryen.DropId);
+ console.log("ReturnId: " + binaryen.ReturnId);
+ console.log("HostId: " + binaryen.HostId);
+ console.log("NopId: " + binaryen.NopId);
+ console.log("UnreachableId: " + binaryen.UnreachableId);
+ console.log("AtomicCmpxchgId: " + binaryen.AtomicCmpxchgId);
+ console.log("AtomicRMWId: " + binaryen.AtomicRMWId);
+ console.log("AtomicWaitId: " + binaryen.AtomicWaitId);
+ console.log("AtomicNotifyId: " + binaryen.AtomicNotifyId);
+ console.log("SIMDExtractId: " + binaryen.SIMDExtractId);
+ console.log("SIMDReplaceId: " + binaryen.SIMDReplaceId);
+ console.log("SIMDShuffleId: " + binaryen.SIMDShuffleId);
+ console.log("SIMDTernaryId: " + binaryen.SIMDTernaryId);
+ console.log("SIMDShiftId: " + binaryen.SIMDShiftId);
+ console.log("SIMDLoadId: " + binaryen.SIMDLoadId);
+ console.log("MemoryInitId: " + binaryen.MemoryInitId);
+ console.log("DataDropId: " + binaryen.DataDropId);
+ console.log("MemoryCopyId: " + binaryen.MemoryCopyId);
+ console.log("MemoryFillId: " + binaryen.MemoryFillId);
+ console.log("TryId: " + binaryen.TryId);
+ console.log("ThrowId: " + binaryen.ThrowId);
+ console.log("RethrowId: " + binaryen.RethrowId);
+ console.log("BrOnExnId: " + binaryen.BrOnExnId);
+ console.log("PushId: " + binaryen.PushId);
+ console.log("PopId: " + binaryen.PopId);
}
function test_core() {
// Module creation
- module = new Binaryen.Module();
+ module = new binaryen.Module();
// Create an event
- var event_ = module.addEvent("a-event", 0, Binaryen.i32, Binaryen.none);
+ var event_ = module.addEvent("a-event", 0, binaryen.i32, binaryen.none);
// Literals and consts
@@ -168,7 +164,7 @@ function test_core() {
constF32Bits = module.f32.const_bits(0xffff1234),
constF64Bits = module.f64.const_bits(0x5678abcd, 0xffff1234);
- var iIfF = Binaryen.createType([Binaryen.i32, Binaryen.i64, Binaryen.f32, Binaryen.f64])
+ var iIfF = binaryen.createType([binaryen.i32, binaryen.i64, binaryen.f32, binaryen.f64])
var temp1 = makeInt32(1), temp2 = makeInt32(2), temp3 = makeInt32(3),
temp4 = makeInt32(4), temp5 = makeInt32(5),
@@ -459,19 +455,19 @@ function test_core() {
module.switch([ "the-value" ], "the-value", temp8, temp9),
module.switch([ "the-nothing" ], "the-nothing", makeInt32(2)),
module.i32.eqz( // check the output type of the call node
- module.call("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], Binaryen.i32)
+ module.call("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], binaryen.i32)
),
module.i32.eqz( // check the output type of the call node
module.i32.trunc_s.f32(
- module.call("an-imported", [ makeInt32(13), makeFloat64(3.7) ], Binaryen.f32)
+ module.call("an-imported", [ makeInt32(13), makeFloat64(3.7) ], binaryen.f32)
)
),
module.i32.eqz( // check the output type of the call node
- module.callIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, Binaryen.i32)
+ module.callIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32)
),
- module.drop(module.local.get(0, Binaryen.i32)),
+ module.drop(module.local.get(0, binaryen.i32)),
module.local.set(0, makeInt32(101)),
- module.drop(module.local.tee(0, makeInt32(102), Binaryen.i32)),
+ module.drop(module.local.tee(0, makeInt32(102), binaryen.i32)),
module.i32.load(0, 0, makeInt32(1)),
module.i64.load16_s(2, 1, makeInt32(8)),
module.f32.load(0, 0, makeInt32(2)),
@@ -481,13 +477,13 @@ function test_core() {
module.select(temp10, temp11, temp12),
module.return(makeInt32(1337)),
// Tail Call
- module.returnCall("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], Binaryen.i32),
- module.returnCallIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, Binaryen.i32),
+ module.returnCall("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], binaryen.i32),
+ module.returnCallIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32),
// Reference types
module.ref.is_null(module.ref.null()),
module.ref.is_null(module.ref.func("kitchen()sinker")),
- module.select(temp10, module.ref.null(), module.ref.func("kitchen()sinker"), Binaryen.funcref),
+ module.select(temp10, module.ref.null(), module.ref.func("kitchen()sinker"), binaryen.funcref),
// Exception handling
module.try(
@@ -498,9 +494,9 @@ function test_core() {
module.block("try-block", [
module.rethrow(
module.br_on_exn("try-block", "a-event",
- module.local.get(5, Binaryen.exnref)),
+ module.local.get(5, binaryen.exnref)),
)
- ], Binaryen.i32)
+ ], binaryen.i32)
)
]
)
@@ -544,13 +540,13 @@ function test_core() {
];
// Test expression utility
- console.log("getExpressionInfo=" + JSON.stringify(cleanInfo(Binaryen.getExpressionInfo(valueList[3]))));
- console.log(Binaryen.emitText(valueList[3])); // test printing a standalone expression
+ console.log("getExpressionInfo=" + JSON.stringify(cleanInfo(binaryen.getExpressionInfo(valueList[3]))));
+ console.log(binaryen.emitText(valueList[3])); // test printing a standalone expression
- console.log("getExpressionInfo(i32.const)=" + JSON.stringify(Binaryen.getExpressionInfo(module.i32.const(5))));
- console.log("getExpressionInfo(i64.const)=" + JSON.stringify(Binaryen.getExpressionInfo(module.i64.const(6, 7))));
- console.log("getExpressionInfo(f32.const)=" + JSON.stringify(Binaryen.getExpressionInfo(module.f32.const(8.5))));
- console.log("getExpressionInfo(f64.const)=" + JSON.stringify(Binaryen.getExpressionInfo(module.f64.const(9.5))));
+ console.log("getExpressionInfo(i32.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.i32.const(5))));
+ console.log("getExpressionInfo(i64.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.i64.const(6, 7))));
+ console.log("getExpressionInfo(f32.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.f32.const(8.5))));
+ console.log("getExpressionInfo(f64.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.f64.const(9.5))));
// Make the main body of the function. and one block with a return value, one without
var value = module.block("the-value", valueList);
@@ -559,19 +555,19 @@ function test_core() {
var body = module.block("the-body", [ nothing, makeInt32(42) ]);
// Create the function
- var sinker = module.addFunction("kitchen()sinker", iIfF, Binaryen.i32, [ Binaryen.i32, Binaryen.exnref ], body);
+ var sinker = module.addFunction("kitchen()sinker", iIfF, binaryen.i32, [ binaryen.i32, binaryen.exnref ], body);
// Create a global
var initExpr = module.i32.const(1);
- var global = module.addGlobal("a-global", Binaryen.i32, false, initExpr)
+ var global = module.addGlobal("a-global", binaryen.i32, false, initExpr)
// Imports
- var iF = Binaryen.createType([Binaryen.i32, Binaryen.f64]);
- module.addFunctionImport("an-imported", "module", "base", iF, Binaryen.f32);
- module.addGlobalImport("a-global-imp", "module", "base", Binaryen.i32, false);
- module.addGlobalImport("a-mut-global-imp", "module", "base", Binaryen.i32, true);
- module.addEventImport("a-event-imp", "module", "base", 0, Binaryen.i32, Binaryen.none);
+ var iF = binaryen.createType([binaryen.i32, binaryen.f64]);
+ module.addFunctionImport("an-imported", "module", "base", iF, binaryen.f32);
+ module.addGlobalImport("a-global-imp", "module", "base", binaryen.i32, false);
+ module.addGlobalImport("a-mut-global-imp", "module", "base", binaryen.i32, true);
+ module.addEventImport("a-event-imp", "module", "base", 0, binaryen.i32, binaryen.none);
// Exports
@@ -581,7 +577,7 @@ function test_core() {
// Function table. One per module
- module.setFunctionTable(1, 0xffffffff, [ Binaryen.getFunctionInfo(sinker).name ]);
+ module.setFunctionTable(1, 0xffffffff, [ binaryen.getFunctionInfo(sinker).name ]);
// Memory. One per module
@@ -599,13 +595,13 @@ function test_core() {
], true);
// Start function. One per module
- var starter = module.addFunction("starter", Binaryen.none, Binaryen.none, [], module.nop());
+ var starter = module.addFunction("starter", binaryen.none, binaryen.none, [], module.nop());
module.setStart(starter);
// A bunch of our code needs drop, auto-add it
module.autoDrop();
- var features = Binaryen.Features.All;
+ var features = binaryen.Features.All;
module.setFeatures(features);
assert(module.getFeatures() == features);
console.log(module.emitText());
@@ -621,67 +617,67 @@ function test_core() {
}
function makeCallCheck(x) {
- return module.call("check", [ makeInt32(x) ], Binaryen.None);
+ return module.call("check", [ makeInt32(x) ], binaryen.None);
}
function test_relooper() {
- module = new Binaryen.Module();
- var localTypes = [ Binaryen.i32 ];
+ module = new binaryen.Module();
+ var localTypes = [ binaryen.i32 ];
- module.addFunctionImport("check", "module", "check", Binaryen.i32, Binaryen.none);
+ module.addFunctionImport("check", "module", "check", binaryen.i32, binaryen.none);
{ // trivial: just one block
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block = relooper.addBlock(makeCallCheck(1337));
var body = relooper.renderAndDispose(block, 0, module);
- module.addFunction("just-one-block", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("just-one-block", binaryen.none, binaryen.none, localTypes, body);
}
{ // two blocks
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
relooper.addBranch(block0, block1); // no condition, no code on branch
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("two-blocks", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("two-blocks", binaryen.none, binaryen.none, localTypes, body);
}
{ // two blocks with code between them
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
relooper.addBranch(block0, block1, null, makeDroppedInt32(77)); // code on branch
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("two-blocks-plus-code", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("two-blocks-plus-code", binaryen.none, binaryen.none, localTypes, body);
}
{ // two blocks in a loop
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
relooper.addBranch(block0, block1, null, null);
relooper.addBranch(block1, block0, null, null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("loop", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("loop", binaryen.none, binaryen.none, localTypes, body);
}
{ // two blocks in a loop with codes
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
relooper.addBranch(block0, block1, null, makeDroppedInt32(33));
relooper.addBranch(block1, block0, null, makeDroppedInt32(-66));
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("loop-plus-code", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("loop-plus-code", binaryen.none, binaryen.none, localTypes, body);
}
{ // split
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
relooper.addBranch(block0, block1, makeInt32(55), null);
relooper.addBranch(block0, block2, null, null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("split", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("split", binaryen.none, binaryen.none, localTypes, body);
}
{ // split + code
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -689,10 +685,10 @@ function test_relooper() {
relooper.addBranch(block0, block1, makeInt32(55), temp);
relooper.addBranch(block0, block2, null, makeDroppedInt32(20));
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("split-plus-code", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("split-plus-code", binaryen.none, binaryen.none, localTypes, body);
}
{ // if
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -700,10 +696,10 @@ function test_relooper() {
relooper.addBranch(block0, block2, null, null);
relooper.addBranch(block1, block2, null, null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("if", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("if", binaryen.none, binaryen.none, localTypes, body);
}
{ // if + code
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -712,10 +708,10 @@ function test_relooper() {
relooper.addBranch(block0, block2, null, makeDroppedInt32(-2));
relooper.addBranch(block1, block2, null, makeDroppedInt32(-3));
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("if-plus-code", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("if-plus-code", binaryen.none, binaryen.none, localTypes, body);
}
{ // if-else
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -725,10 +721,10 @@ function test_relooper() {
relooper.addBranch(block1, block3, null, null);
relooper.addBranch(block2, block3, null, null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("if-else", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("if-else", binaryen.none, binaryen.none, localTypes, body);
}
{ // loop+tail
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -736,10 +732,10 @@ function test_relooper() {
relooper.addBranch(block1, block0, makeInt32(10), null);
relooper.addBranch(block1, block2, null, null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("loop-tail", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("loop-tail", binaryen.none, binaryen.none, localTypes, body);
}
{ // nontrivial loop + phi to head
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -757,10 +753,10 @@ function test_relooper() {
relooper.addBranch(block4, block5, null, null);
relooper.addBranch(block5, block6, null, makeDroppedInt32(40));
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("nontrivial-loop-plus-phi-to-head", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("nontrivial-loop-plus-phi-to-head", binaryen.none, binaryen.none, localTypes, body);
}
{ // switch
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
temp = makeInt32(-99);
var block0 = relooper.addBlockWithSwitch(makeCallCheck(0), temp);
var block1 = relooper.addBlock(makeCallCheck(1));
@@ -770,10 +766,10 @@ function test_relooper() {
relooper.addBranchForSwitch(block0, block2, [4], makeDroppedInt32(55));
relooper.addBranchForSwitch(block0, block3, [], null);
var body = relooper.renderAndDispose(block0, 0, module);
- module.addFunction("switch", Binaryen.none, Binaryen.none, localTypes, body);
+ module.addFunction("switch", binaryen.none, binaryen.none, localTypes, body);
}
{ // duff's device
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var block0 = relooper.addBlock(makeCallCheck(0));
var block1 = relooper.addBlock(makeCallCheck(1));
var block2 = relooper.addBlock(makeCallCheck(2));
@@ -782,15 +778,15 @@ function test_relooper() {
relooper.addBranch(block1, block2, null, null);
relooper.addBranch(block2, block1, null, null);
var body = relooper.renderAndDispose(block0, 3, module); // use $3 as the helper var
- module.addFunction("duffs-device", Binaryen.none, Binaryen.none, [ Binaryen.i32, Binaryen.i32, Binaryen.i64, Binaryen.i32, Binaryen.f32, Binaryen.f64, Binaryen.i32 ], body);
+ module.addFunction("duffs-device", binaryen.none, binaryen.none, [ binaryen.i32, binaryen.i32, binaryen.i64, binaryen.i32, binaryen.f32, binaryen.f64, binaryen.i32 ], body);
}
{ // return in a block
- var relooper = new Binaryen.Relooper(module);
+ var relooper = new binaryen.Relooper(module);
var list = module.block("the-list", [ makeCallCheck(42), module.return(makeInt32(1337)) ]);
var block = relooper.addBlock(list);
var body = relooper.renderAndDispose(block, 0, module);
- module.addFunction("return", Binaryen.none, Binaryen.i32, localTypes, body);
+ module.addFunction("return", binaryen.none, binaryen.i32, localTypes, body);
}
console.log("raw:");
@@ -816,19 +812,19 @@ function test_binaries() {
var buffer, size;
{ // create a module and write it to binary
- module = new Binaryen.Module();
- module.setFeatures(Binaryen.Features.All);
- var ii = Binaryen.createType([Binaryen.i32, Binaryen.i32]);
- var x = module.local.get(0, Binaryen.i32),
- y = module.local.get(1, Binaryen.i32);
+ module = new binaryen.Module();
+ module.setFeatures(binaryen.Features.All);
+ var ii = binaryen.createType([binaryen.i32, binaryen.i32]);
+ var x = module.local.get(0, binaryen.i32),
+ y = module.local.get(1, binaryen.i32);
var add = module.i32.add(x, y);
- var adder = module.addFunction("adder", ii, Binaryen.i32, [], add);
+ var adder = module.addFunction("adder", ii, binaryen.i32, [], add);
var initExpr = module.i32.const(3);
- var global = module.addGlobal("a-global", Binaryen.i32, false, initExpr)
- var event_ = module.addEvent("a-event", 0, Binaryen.createType([Binaryen.i32, Binaryen.i32]), Binaryen.none);
- Binaryen.setDebugInfo(true); // include names section
+ var global = module.addGlobal("a-global", binaryen.i32, false, initExpr)
+ var event_ = module.addEvent("a-event", 0, binaryen.createType([binaryen.i32, binaryen.i32]), binaryen.none);
+ binaryen.setDebugInfo(true); // include names section
buffer = module.emitBinary();
- Binaryen.setDebugInfo(false);
+ binaryen.setDebugInfo(false);
size = buffer.length; // write out the module
module.dispose();
}
@@ -837,8 +833,8 @@ function test_binaries() {
assert(size < 512); // this is a tiny module
// read the module from the binary
- module = Binaryen.readBinary(buffer);
- module.setFeatures(Binaryen.Features.All);
+ module = binaryen.readBinary(buffer);
+ module.setFeatures(binaryen.Features.All);
// validate, print, and free
assert(module.validate());
@@ -849,11 +845,11 @@ function test_binaries() {
function test_interpret() {
// create a simple module with a start method that prints a number, and interpret it, printing that number.
- module = new Binaryen.Module();
+ module = new binaryen.Module();
- module.addFunctionImport("print-i32", "spectest", "print", Binaryen.i32, Binaryen.none);
- call = module.call("print-i32", [ makeInt32(1234) ], Binaryen.None);
- var starter = module.addFunction("starter", Binaryen.none, Binaryen.none, [], call);
+ module.addFunctionImport("print-i32", "spectest", "print", binaryen.i32, binaryen.none);
+ call = module.call("print-i32", [ makeInt32(1234) ], binaryen.None);
+ var starter = module.addFunction("starter", binaryen.none, binaryen.none, [], call);
module.setStart(starter);
console.log(module.emitText());
@@ -864,9 +860,9 @@ function test_interpret() {
function test_nonvalid() {
// create a module that fails to validate
- module = new Binaryen.Module();
+ module = new binaryen.Module();
- var func = module.addFunction("func", Binaryen.none, Binaryen.none, [ Binaryen.i32 ],
+ var func = module.addFunction("func", binaryen.none, binaryen.none, [ binaryen.i32 ],
module.local.set(0, makeInt64(1234, 0)) // wrong type!
);
@@ -877,28 +873,28 @@ function test_nonvalid() {
}
function test_tracing() {
- Binaryen.setAPITracing(1);
+ binaryen.setAPITracing(1);
test_core();
test_relooper();
test_types();
- Binaryen.setAPITracing(0);
+ binaryen.setAPITracing(0);
}
function test_parsing() {
var text;
// create a module and write it to text
- module = new Binaryen.Module();
- module.setFeatures(Binaryen.Features.All);
+ module = new binaryen.Module();
+ module.setFeatures(binaryen.Features.All);
- var ii = Binaryen.createType([Binaryen.i32, Binaryen.i32]);
- var x = module.local.get(0, Binaryen.i32),
- y = module.local.get(1, Binaryen.i32);
+ var ii = binaryen.createType([binaryen.i32, binaryen.i32]);
+ var x = module.local.get(0, binaryen.i32),
+ y = module.local.get(1, binaryen.i32);
var add = module.i32.add(x, y);
- var adder = module.addFunction("adder", ii, Binaryen.i32, [], add);
+ var adder = module.addFunction("adder", ii, binaryen.i32, [], add);
var initExpr = module.i32.const(3);
- var global = module.addGlobal("a-global", Binaryen.i32, false, initExpr)
- var event_ = module.addEvent("a-event", 0, Binaryen.i32, Binaryen.none);
+ var global = module.addGlobal("a-global", binaryen.i32, false, initExpr)
+ var event_ = module.addEvent("a-event", 0, binaryen.i32, binaryen.none);
text = module.emitText();
module.dispose();
module = null;
@@ -906,8 +902,8 @@ function test_parsing() {
text = text.replace('adder', 'ADD_ER');
- var module2 = Binaryen.parseText(text);
- module2.setFeatures(Binaryen.Features.All);
+ var module2 = binaryen.parseText(text);
+ module2.setFeatures(binaryen.Features.All);
assert(module2.validate());
console.log("module loaded from text form:");
console.log(module2.emitText());
@@ -915,16 +911,16 @@ function test_parsing() {
}
function test_internals() {
- console.log('sizeof Literal: ' + Binaryen['_BinaryenSizeofLiteral']());
+ console.log('sizeof Literal: ' + binaryen['_BinaryenSizeofLiteral']());
}
function test_for_each() {
- module = new Binaryen.Module();
+ module = new binaryen.Module();
var fns = [
- module.addFunction("fn0", Binaryen.none, Binaryen.none, [], module.nop()),
- module.addFunction("fn1", Binaryen.none, Binaryen.none, [], module.nop()),
- module.addFunction("fn2", Binaryen.none, Binaryen.none, [], module.nop())
+ module.addFunction("fn0", binaryen.none, binaryen.none, [], module.nop()),
+ module.addFunction("fn1", binaryen.none, binaryen.none, [], module.nop()),
+ module.addFunction("fn2", binaryen.none, binaryen.none, [], module.nop())
];
var i;
@@ -945,7 +941,7 @@ function test_for_each() {
var expected_offsets = [10, 125];
var expected_data = ["hello, world", "segment data 2"];
- var global = module.addGlobal("a-global", Binaryen.i32, false, module.i32.const(expected_offsets[1]))
+ var global = module.addGlobal("a-global", binaryen.i32, false, module.i32.const(expected_offsets[1]))
module.setMemory(1, 256, "mem", [
{
passive: false,
@@ -971,32 +967,28 @@ function test_for_each() {
}
function test_expression_info() {
- module = new Binaryen.Module();
+ module = new binaryen.Module();
// Issue #2392
- console.log("getExpressionInfo(memory.grow)=" + JSON.stringify(Binaryen.getExpressionInfo(module.memory.grow(1))));
+ console.log("getExpressionInfo(memory.grow)=" + JSON.stringify(binaryen.getExpressionInfo(module.memory.grow(1))));
// Issue #2396
- console.log("getExpressionInfo(switch)=" + JSON.stringify(Binaryen.getExpressionInfo(module.switch([ "label" ], "label", 0))));
+ console.log("getExpressionInfo(switch)=" + JSON.stringify(binaryen.getExpressionInfo(module.switch([ "label" ], "label", 0))));
module.dispose();
}
-function test() {
- // Tracing must be first so it starts with a fresh set of interned types
- test_tracing();
- test_types();
- test_features();
- test_ids();
- test_core();
- test_relooper();
- test_binaries();
- test_interpret();
- test_nonvalid();
- test_parsing();
- test_internals();
- test_for_each();
- test_expression_info();
-}
-
-Binaryen.ready.then(test);
+// Tracing must be first so it starts with a fresh set of interned types
+test_tracing();
+test_types();
+test_features();
+test_ids();
+test_core();
+test_relooper();
+test_binaries();
+test_interpret();
+test_nonvalid();
+test_parsing();
+test_internals();
+test_for_each();
+test_expression_info();
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 7e0615ffd..c86b276d5 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -6272,50 +6272,50 @@ optimized:
// 13 [ 2, 2 ]
// 13 [ 2, 2 ]
// 14 [ 4, 4 ]
-Binaryen.Features.MVP: 0
-Binaryen.Features.Atomics: 1
-Binaryen.Features.BulkMemory: 16
-Binaryen.Features.MutableGlobals: 2
-Binaryen.Features.NontrappingFPToInt: 4
-Binaryen.Features.SignExt: 32
-Binaryen.Features.SIMD128: 8
-Binaryen.Features.ExceptionHandling: 64
-Binaryen.Features.TailCall: 128
-Binaryen.Features.ReferenceTypes: 256
-Binaryen.Features.All: 511
-BinaryenInvalidId: 0
-BinaryenBlockId: 1
-BinaryenIfId: 2
-BinaryenLoopId: 3
-BinaryenBreakId: 4
-BinaryenSwitchId: 5
-BinaryenCallId: 6
-BinaryenCallIndirectId: 7
-BinaryenLocalGetId: 8
-BinaryenLocalSetId: 9
-BinaryenGlobalGetId: 10
-BinaryenGlobalSetId: 11
-BinaryenLoadId: 12
-BinaryenStoreId: 13
-BinaryenConstId: 14
-BinaryenUnaryId: 15
-BinaryenBinaryId: 16
-BinaryenSelectId: 17
-BinaryenDropId: 18
-BinaryenReturnId: 19
-BinaryenHostId: 20
-BinaryenNopId: 21
-BinaryenUnreachableId: 22
-BinaryenAtomicCmpxchgId: 24
-BinaryenAtomicRMWId: 23
-BinaryenAtomicWaitId: 25
-BinaryenAtomicNotifyId: 26
-BinaryenSIMDExtractId: 28
-BinaryenSIMDReplaceId: 29
-BinaryenSIMDShuffleId: 30
-BinaryenSIMDTernaryId: 31
-BinaryenSIMDShiftId: 32
-BinaryenSIMDLoadId: 33
+Features.MVP: 0
+Features.Atomics: 1
+Features.BulkMemory: 16
+Features.MutableGlobals: 2
+Features.NontrappingFPToInt: 4
+Features.SignExt: 32
+Features.SIMD128: 8
+Features.ExceptionHandling: 64
+Features.TailCall: 128
+Features.ReferenceTypes: 256
+Features.All: 511
+InvalidId: 0
+BlockId: 1
+IfId: 2
+LoopId: 3
+BreakId: 4
+SwitchId: 5
+CallId: 6
+CallIndirectId: 7
+LocalGetId: 8
+LocalSetId: 9
+GlobalGetId: 10
+GlobalSetId: 11
+LoadId: 12
+StoreId: 13
+ConstId: 14
+UnaryId: 15
+BinaryId: 16
+SelectId: 17
+DropId: 18
+ReturnId: 19
+HostId: 20
+NopId: 21
+UnreachableId: 22
+AtomicCmpxchgId: 24
+AtomicRMWId: 23
+AtomicWaitId: 25
+AtomicNotifyId: 26
+SIMDExtractId: 28
+SIMDReplaceId: 29
+SIMDShuffleId: 30
+SIMDTernaryId: 31
+SIMDShiftId: 32
+SIMDLoadId: 33
MemoryInitId: 34
DataDropId: 35
MemoryCopyId: 36
diff --git a/test/binaryen.js/optimize-levels.js b/test/binaryen.js/optimize-levels.js
index b3ae66a43..b3dd2adbd 100644
--- a/test/binaryen.js/optimize-levels.js
+++ b/test/binaryen.js/optimize-levels.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
var wast = `
(module
(type $i (func (param i32) (result i32)))
@@ -19,51 +15,47 @@ var wast = `
)
`;
-function test() {
- console.log("=== input wast ===" + wast);
-
- function printOptions() {
- console.log("optimizeLevel=" + Binaryen.getOptimizeLevel());
- console.log("shrinkLevel=" + Binaryen.getShrinkLevel());
- }
-
- // Use defaults (should be equal to -Os below)
- var module = Binaryen.parseText(wast);
-
- console.log("=== unoptimized ===");
- assert(module.validate());
- console.log(module.emitText());
-
- module.optimize();
- console.log("=== optimized using defaults ===");
- printOptions();
- assert(module.validate());
- console.log(module.emitText());
- module.dispose();
-
- // Use -O0 (should remove the block)
- module = Binaryen.parseText(wast);
-
- Binaryen.setOptimizeLevel(0);
- Binaryen.setShrinkLevel(0);
- module.optimize();
- console.log("=== optimized with -O0 ===");
- printOptions();
- assert(module.validate());
- console.log(module.emitText());
- module.dispose();
-
- // Use -Os (should remove the block and convert to a select)
- module = Binaryen.parseText(wast);
+console.log("=== input wast ===" + wast);
- Binaryen.setOptimizeLevel(2);
- Binaryen.setShrinkLevel(1);
- module.optimize();
- console.log("=== optimized with -Os ===");
- printOptions();
- assert(module.validate());
- console.log(module.emitText());
- module.dispose();
+function printOptions() {
+ console.log("optimizeLevel=" + binaryen.getOptimizeLevel());
+ console.log("shrinkLevel=" + binaryen.getShrinkLevel());
}
-Binaryen.ready.then(test);
+// Use defaults (should be equal to -Os below)
+var module = binaryen.parseText(wast);
+
+console.log("=== unoptimized ===");
+assert(module.validate());
+console.log(module.emitText());
+
+module.optimize();
+console.log("=== optimized using defaults ===");
+printOptions();
+assert(module.validate());
+console.log(module.emitText());
+module.dispose();
+
+// Use -O0 (should remove the block)
+module = binaryen.parseText(wast);
+
+binaryen.setOptimizeLevel(0);
+binaryen.setShrinkLevel(0);
+module.optimize();
+console.log("=== optimized with -O0 ===");
+printOptions();
+assert(module.validate());
+console.log(module.emitText());
+module.dispose();
+
+// Use -Os (should remove the block and convert to a select)
+module = binaryen.parseText(wast);
+
+binaryen.setOptimizeLevel(2);
+binaryen.setShrinkLevel(1);
+module.optimize();
+console.log("=== optimized with -Os ===");
+printOptions();
+assert(module.validate());
+console.log(module.emitText());
+module.dispose();
diff --git a/test/binaryen.js/push-pop.js b/test/binaryen.js/push-pop.js
index 2b50b2dca..042ed17d6 100644
--- a/test/binaryen.js/push-pop.js
+++ b/test/binaryen.js/push-pop.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
function cleanInfo(info) {
var ret = {};
for (var x in info) {
@@ -13,40 +9,35 @@ function cleanInfo(info) {
}
function stringify(expr) {
- return JSON.stringify(cleanInfo(Binaryen.getExpressionInfo(expr)));
+ return JSON.stringify(cleanInfo(binaryen.getExpressionInfo(expr)));
}
-function test() {
- var module = new Binaryen.Module();
+var module = new binaryen.Module();
- var func = module.addFunction("func", Binaryen.none, Binaryen.none, [],
- module.block(null, [
- module.push(module.i32.pop()),
- module.push(module.i64.pop()),
- module.push(module.f32.pop()),
- module.push(module.f64.pop()),
- module.push(module.v128.pop()),
- module.push(module.funcref.pop()),
- module.push(module.anyref.pop()),
- module.push(module.nullref.pop()),
- module.push(module.exnref.pop())
- ]
- )
- )
+var func = module.addFunction("func", binaryen.none, binaryen.none, [],
+ module.block(null, [
+ module.push(module.i32.pop()),
+ module.push(module.i64.pop()),
+ module.push(module.f32.pop()),
+ module.push(module.f64.pop()),
+ module.push(module.v128.pop()),
+ module.push(module.funcref.pop()),
+ module.push(module.anyref.pop()),
+ module.push(module.nullref.pop()),
+ module.push(module.exnref.pop())
+ ])
+)
- assert(module.validate());
- console.log(module.emitText());
-
- console.log("getExpressionInfo(i32.pop) = " + stringify(module.i32.pop()));
- console.log("getExpressionInfo(i64.pop) = " + stringify(module.i64.pop()));
- console.log("getExpressionInfo(f32.pop) = " + stringify(module.f32.pop()));
- console.log("getExpressionInfo(f64.pop) = " + stringify(module.f64.pop()));
- console.log("getExpressionInfo(v128.pop) = " + stringify(module.v128.pop()));
- console.log("getExpressionInfo(funcref.pop) = " + stringify(module.funcref.pop()));
- console.log("getExpressionInfo(anyref.pop) = " + stringify(module.anyref.pop()));
- console.log("getExpressionInfo(nullref.pop) = " + stringify(module.nullref.pop()));
- console.log("getExpressionInfo(exnref.pop) = " + stringify(module.exnref.pop()));
- console.log("getExpressionInfo(push) = " + stringify(module.push(module.i32.const(0))));
-}
+assert(module.validate());
+console.log(module.emitText());
-Binaryen.ready.then(test);
+console.log("getExpressionInfo(i32.pop) = " + stringify(module.i32.pop()));
+console.log("getExpressionInfo(i64.pop) = " + stringify(module.i64.pop()));
+console.log("getExpressionInfo(f32.pop) = " + stringify(module.f32.pop()));
+console.log("getExpressionInfo(f64.pop) = " + stringify(module.f64.pop()));
+console.log("getExpressionInfo(v128.pop) = " + stringify(module.v128.pop()));
+console.log("getExpressionInfo(funcref.pop) = " + stringify(module.funcref.pop()));
+console.log("getExpressionInfo(anyref.pop) = " + stringify(module.anyref.pop()));
+console.log("getExpressionInfo(nullref.pop) = " + stringify(module.nullref.pop()));
+console.log("getExpressionInfo(exnref.pop) = " + stringify(module.exnref.pop()));
+console.log("getExpressionInfo(push) = " + stringify(module.push(module.i32.const(0))));
diff --git a/test/binaryen.js/reloc.js b/test/binaryen.js/reloc.js
index e9fdd6012..bb011916d 100644
--- a/test/binaryen.js/reloc.js
+++ b/test/binaryen.js/reloc.js
@@ -1,29 +1,21 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
+var module = new binaryen.Module();
-function test() {
- var module = new Binaryen.Module();
+// memory with offset
- // memory with offset
+module.addGlobalImport("memory_base", "env", "memory_base", binaryen.i32, false);
+module.setMemory(1, -1, null, [
+ {
+ offset: module.global.get("memory_base", binaryen.i32),
+ data: "data data".split('').map(function(x) { return x.charCodeAt(0) })
+ }
+]);
- module.addGlobalImport("memory_base", "env", "memory_base", Binaryen.i32, false);
- module.setMemory(1, -1, null, [
- {
- offset: module.global.get("memory_base", Binaryen.i32),
- data: "data data".split('').map(function(x) { return x.charCodeAt(0) })
- }
- ]);
+// table with offset
- // table with offset
+var func = module.addFunction("func", binaryen.none, binaryen.none, [], module.nop());
- var func = module.addFunction("func", Binaryen.none, Binaryen.none, [], module.nop());
+module.addGlobalImport("table_base", "env", "table_base", binaryen.i32, false);
+module.setFunctionTable(1, -1, [ "func", "func" ], module.global.get("table_base", binaryen.i32));
- module.addGlobalImport("table_base", "env", "table_base", Binaryen.i32, false);
- module.setFunctionTable(1, -1, [ "func", "func" ], module.global.get("table_base", Binaryen.i32));
-
- assert(module.validate());
- console.log(module.emitText());
-}
-
-Binaryen.ready.then(test);
+assert(module.validate());
+console.log(module.emitText());
diff --git a/test/binaryen.js/sieve.js b/test/binaryen.js/sieve.js
index ef7c6cca8..4ba61a434 100644
--- a/test/binaryen.js/sieve.js
+++ b/test/binaryen.js/sieve.js
@@ -1,79 +1,75 @@
-function test() {
- // Create a module to work on
- var module = new Binaryen.Module();
+// Create a module to work on
+var module = new binaryen.Module();
- // Set a memory of initially one page, maximum 100 pages
- module.setMemory(1, 100);
+// Set a memory of initially one page, maximum 100 pages
+module.setMemory(1, 100);
- var body = module.block(
- null,
- [
- // if the current memory size is too small, grow it
- module.if(
- module.i32.lt_u(
- module.i32.mul(
- module.memory.size(),
- module.i32.const(65536)
- ),
- module.local.get(0, Binaryen.i32)
+var body = module.block(
+ null,
+ [
+ // if the current memory size is too small, grow it
+ module.if(
+ module.i32.lt_u(
+ module.i32.mul(
+ module.memory.size(),
+ module.i32.const(65536)
),
- module.drop(
- module.memory.grow(
- module.i32.sub(
- module.i32.div_u(
- module.i32.add(
- module.local.get(0, Binaryen.i32),
- module.i32.const(65535)
- ),
- module.i32.const(65536)
+ module.local.get(0, binaryen.i32)
+ ),
+ module.drop(
+ module.memory.grow(
+ module.i32.sub(
+ module.i32.div_u(
+ module.i32.add(
+ module.local.get(0, binaryen.i32),
+ module.i32.const(65535)
),
- module.memory.size()
- )
+ module.i32.const(65536)
+ ),
+ module.memory.size()
)
)
+ )
+ ),
+ // first, clear memory
+ module.local.set(1, module.i32.const(0)),
+ module.loop('clear', module.block(null, [
+ module.i32.store8(0, 1,
+ module.local.get(1, binaryen.i32),
+ module.i32.const(0)
),
- // first, clear memory
- module.local.set(1, module.i32.const(0)),
- module.loop('clear', module.block(null, [
- module.i32.store8(0, 1,
- module.local.get(1, Binaryen.i32),
- module.i32.const(0)
- ),
- module.local.set(1, module.i32.add(
- module.local.get(1, Binaryen.i32),
- module.i32.const(1)
- )),
- module.br_if('clear', module.i32.eq(
- module.local.get(1, Binaryen.i32),
- module.local.get(0, Binaryen.i32)
- ))
- ])),
- // perform the sieve TODO
- // calculate how many primes there are
- module.return(module.local.get(0, Binaryen.i32))
- ],
- Binaryen.none
- );
-
- // Create the add function
- // Note: no additional local variables (that's the [])
- module.addFunction('sieve', Binaryen.i32, Binaryen.i32, [Binaryen.i32], body);
+ module.local.set(1, module.i32.add(
+ module.local.get(1, binaryen.i32),
+ module.i32.const(1)
+ )),
+ module.br_if('clear', module.i32.eq(
+ module.local.get(1, binaryen.i32),
+ module.local.get(0, binaryen.i32)
+ ))
+ ])),
+ // perform the sieve TODO
+ // calculate how many primes there are
+ module.return(module.local.get(0, binaryen.i32))
+ ],
+ binaryen.none
+);
- // Export the function, so we can call it later (for simplicity we
- // export it as the same name as it has internally)
- module.addFunctionExport('sieve', 'sieve');
+// Create the add function
+// Note: no additional local variables (that's the [])
+module.addFunction('sieve', binaryen.i32, binaryen.i32, [binaryen.i32], body);
- if (!module.validate()) throw 'did not validate :(';
+// Export the function, so we can call it later (for simplicity we
+// export it as the same name as it has internally)
+module.addFunctionExport('sieve', 'sieve');
- // Print out the text
- console.log(module.emitText());
+if (!module.validate()) throw 'did not validate :(';
- // Optimize the module! This removes the 'return', since the
- // output of the add can just fall through
- module.optimize();
+// Print out the text
+console.log(module.emitText());
- // Print out the optimized module's text
- console.log('optimized:\n\n' + module.emitText());
-}
+// Optimize the module! This removes the 'return', since the
+// output of the add can just fall through
+module.optimize();
-Binaryen.ready.then(test);
+// Print out the optimized module's text
+console.log('optimized:\n\n' + module.emitText());
diff --git a/test/binaryen.js/simd.js b/test/binaryen.js/simd.js
index 68785f9d7..347bb8682 100644
--- a/test/binaryen.js/simd.js
+++ b/test/binaryen.js/simd.js
@@ -1,9 +1,5 @@
-function test() {
- var module = new Binaryen.Module();
+var module = new binaryen.Module();
- var expr = module.v128.const([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0]);
- var info = Binaryen.getExpressionInfo(expr);
- console.log("v128.const i8x16 0x" + info.value.map(b => b.toString(16)).join(" 0x"));
-}
-
-Binaryen.ready.then(test);
+var expr = module.v128.const([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0]);
+var info = binaryen.getExpressionInfo(expr);
+console.log("v128.const i8x16 0x" + info.value.map(b => b.toString(16)).join(" 0x"));
diff --git a/test/binaryen.js/sourcemap.js b/test/binaryen.js/sourcemap.js
index f8deecf3f..90f41c720 100644
--- a/test/binaryen.js/sourcemap.js
+++ b/test/binaryen.js/sourcemap.js
@@ -1,46 +1,38 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
-function test() {
- var module = new Binaryen.Module();
+var module = new binaryen.Module();
- var fileIndex = module.addDebugInfoFileName("module.c");
+var fileIndex = module.addDebugInfoFileName("module.c");
- console.log(module.getDebugInfoFileName(fileIndex));
- console.log();
+console.log(module.getDebugInfoFileName(fileIndex));
+console.log();
- var expr = module.i32.const(1);
- var body = module.block("", [
- expr
- ], Binaryen.i32);
+var expr = module.i32.const(1);
+var body = module.block("", [
+ expr
+], binaryen.i32);
- var func = module.addFunction("main", Binaryen.none, Binaryen.i32, [], body);
+var func = module.addFunction("main", binaryen.none, binaryen.i32, [], body);
- module.setDebugLocation(func, expr, fileIndex, 1, 2);
- module.setDebugLocation(func, body, fileIndex, 0, 3);
+module.setDebugLocation(func, expr, fileIndex, 1, 2);
+module.setDebugLocation(func, body, fileIndex, 0, 3);
- var output = module.emitBinary("module.wasm.map");
- assert(module.validate());
+var output = module.emitBinary("module.wasm.map");
+assert(module.validate());
- function dumpBinary(buffer) {
- var hex = [], o, b, h;
- for (var i = 0; i < buffer.length; ++i) {
- o = i.toString(16);
- while (o.length < 3) o = "0" + o;
- if ((i & 15) === 0) hex.push((i ? "\n" : "") + o + ":");
- if ((b = buffer[i]) >= 0x21 && b <= 0x7e)
- h = String.fromCharCode(b) + ' ';
- else if ((h = b.toString(16)).length < 2)
- h = "0" + h;
- hex.push(h);
- }
- console.log(hex.join(" "));
+function dumpBinary(buffer) {
+ var hex = [], o, b, h;
+ for (var i = 0; i < buffer.length; ++i) {
+ o = i.toString(16);
+ while (o.length < 3) o = "0" + o;
+ if ((i & 15) === 0) hex.push((i ? "\n" : "") + o + ":");
+ if ((b = buffer[i]) >= 0x21 && b <= 0x7e)
+ h = String.fromCharCode(b) + ' ';
+ else if ((h = b.toString(16)).length < 2)
+ h = "0" + h;
+ hex.push(h);
}
-
- dumpBinary(output.binary);
- console.log();
- console.log(output.sourceMap);
+ console.log(hex.join(" "));
}
-Binaryen.ready.then(test);
+dumpBinary(output.binary);
+console.log();
+console.log(output.sourceMap);
diff --git a/test/binaryen.js/stackir.js b/test/binaryen.js/stackir.js
index 324a99abe..20754e078 100644
--- a/test/binaryen.js/stackir.js
+++ b/test/binaryen.js/stackir.js
@@ -1,7 +1,3 @@
-function assert(x) {
- if (!x) throw 'error!';
-}
-
var wast = `
(module
(type $i (func (param i32) (result i32)))
@@ -21,17 +17,13 @@ var wast = `
)
`;
-function test() {
- console.log("=== input wast ===" + wast);
-
- var module = Binaryen.parseText(wast);
- assert(module.validate());
+console.log("=== input wast ===" + wast);
- console.log("=== default ===");
- console.log(module.emitStackIR());
+var module = binaryen.parseText(wast);
+assert(module.validate());
- console.log("=== optimize ==="); // should omit the second block
- console.log(module.emitStackIR(true));
-}
+console.log("=== default ===");
+console.log(module.emitStackIR());
-Binaryen.ready.then(test);
+console.log("=== optimize ==="); // should omit the second block
+console.log(module.emitStackIR(true));
diff --git a/test/binaryen.js/validation_errors.js b/test/binaryen.js/validation_errors.js
index 1251d37e6..57e37d8ba 100644
--- a/test/binaryen.js/validation_errors.js
+++ b/test/binaryen.js/validation_errors.js
@@ -1,29 +1,25 @@
-function test() {
- (function() {
- var mod = new Binaryen.Module();
- var func = mod.addFunction("test", Binaryen.none, Binaryen.none, [],
- mod.block("", [
- mod.drop(
- mod.global.get("missing", Binaryen.i32)
- )
- ])
- );
- mod.addExport("test", func);
- console.log(mod.validate())
- })();
+(function() {
+ var mod = new binaryen.Module();
+ var func = mod.addFunction("test", binaryen.none, binaryen.none, [],
+ mod.block("", [
+ mod.drop(
+ mod.global.get("missing", binaryen.i32)
+ )
+ ])
+ );
+ mod.addExport("test", func);
+ console.log(mod.validate())
+})();
- (function() {
- var mod = new Binaryen.Module();
- var func = mod.addFunction("test", Binaryen.none, Binaryen.none, [],
- mod.block("", [
- mod.drop(
- mod.local.get(0, Binaryen.i32)
- )
- ])
- );
- mod.addFunctionExport("test", "test", func);
- console.log(mod.validate())
- })();
-}
-
-Binaryen.ready.then(test);
+(function() {
+ var mod = new binaryen.Module();
+ var func = mod.addFunction("test", binaryen.none, binaryen.none, [],
+ mod.block("", [
+ mod.drop(
+ mod.local.get(0, binaryen.i32)
+ )
+ ])
+ );
+ mod.addFunctionExport("test", "test", func);
+ console.log(mod.validate())
+})();