summaryrefslogtreecommitdiff
path: root/test/binaryen.js/functions.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2020-09-18 17:08:58 +0200
committerGitHub <noreply@github.com>2020-09-18 17:08:58 +0200
commit1a928bc3ff4b511e81b3f93db8aea872e88abaaf (patch)
treec36dc3594abcd32e61f1e0a63d85339c266db788 /test/binaryen.js/functions.js
parent2548f04c198594a21e4144261e8cfea5de56308a (diff)
downloadbinaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.tar.gz
binaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.tar.bz2
binaryen-1a928bc3ff4b511e81b3f93db8aea872e88abaaf.zip
Update JS API function wrapper (#3128)
Updates the JS API `Function` wrapper introduced in #3115 with bindings for more C API functions. Also adds additional comments to describe the inner workings of wrappers in more detail.
Diffstat (limited to 'test/binaryen.js/functions.js')
-rw-r--r--test/binaryen.js/functions.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/binaryen.js/functions.js b/test/binaryen.js/functions.js
index b50632dfa..84f59350b 100644
--- a/test/binaryen.js/functions.js
+++ b/test/binaryen.js/functions.js
@@ -32,3 +32,44 @@ module.removeFunction("a-function");
assert(module.validate());
console.log(module.emitText());
+
+// Test wrapper
+
+func = module.addFunction("b-function",
+ binaryen.createType([binaryen.i32, binaryen.i32]),
+ binaryen.i32,
+ [ binaryen.i32, binaryen.f64 ],
+ module.local.tee(2,
+ module.i32.add(
+ module.local.get(0, binaryen.i32),
+ module.local.get(1, binaryen.i32)
+ ),
+ binaryen.i32
+ )
+);
+binaryen.Function.setLocalName(func, 0, "a");
+binaryen.Function.setLocalName(func, 1, "b");
+binaryen.Function.setLocalName(func, 2, "ret");
+binaryen.Function.setLocalName(func, 3, "unused");
+
+var theFunc = binaryen.Function(func);
+assert(theFunc.name === "b-function");
+assert(theFunc.params === binaryen.createType([binaryen.i32, binaryen.i32]));
+assert(theFunc.results === binaryen.i32);
+assert(theFunc.numVars === 2);
+assert(theFunc.getVar(0) === binaryen.i32);
+assert(theFunc.getVar(1) === binaryen.f64);
+assert(theFunc.numLocals === 4);
+assert(theFunc.getLocalName(0) === "a");
+assert(theFunc.getLocalName(1) === "b");
+assert(theFunc.getLocalName(2) === "ret");
+assert(theFunc.getLocalName(3) === "unused");
+theFunc.setLocalName(2, "res");
+assert(theFunc.getLocalName(2) === "res");
+assert((theFunc | 0) === func);
+
+assert(module.validate());
+
+console.log(module.emitText());
+
+module.dispose();