summaryrefslogtreecommitdiff
path: root/test/binaryen.js
diff options
context:
space:
mode:
authorCOFFEETALES <46571757+COFFEETALES@users.noreply.github.com>2020-02-20 20:18:55 +0100
committerGitHub <noreply@github.com>2020-02-20 11:18:55 -0800
commit42e566c7983ef54e1fedf8ec2addfb23153509fa (patch)
tree4a59175a2b0c8140e528d156a4cd96fbbb4d66da /test/binaryen.js
parent0761f5d1b8cc2bf6041370706e82c80e5881d0b0 (diff)
downloadbinaryen-42e566c7983ef54e1fedf8ec2addfb23153509fa.tar.gz
binaryen-42e566c7983ef54e1fedf8ec2addfb23153509fa.tar.bz2
binaryen-42e566c7983ef54e1fedf8ec2addfb23153509fa.zip
Add the GetFunctionTable JS API (#2554)
Diffstat (limited to 'test/binaryen.js')
-rw-r--r--test/binaryen.js/kitchen-sink.js32
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt2
2 files changed, 25 insertions, 9 deletions
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index fd951814c..95865566a 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -917,24 +917,26 @@ function test_internals() {
function test_for_each() {
module = new binaryen.Module();
+ var funcNames = [ "fn0", "fn1", "fn2" ];
+
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(funcNames[0], binaryen.none, binaryen.none, [], module.nop()),
+ module.addFunction(funcNames[1], binaryen.none, binaryen.none, [], module.nop()),
+ module.addFunction(funcNames[2], binaryen.none, binaryen.none, [], module.nop())
];
var i;
- for (i = 0 ; i < module.getNumFunctions() ; i++) {
+ for (i = 0; i < module.getNumFunctions(); i++) {
assert(module.getFunctionByIndex(i) === fns[i]);
}
var exps = [
- module.addFunctionExport("fn0", "export0"),
- module.addFunctionExport("fn1", "export1"),
- module.addFunctionExport("fn2", "export2")
+ module.addFunctionExport(funcNames[0], "export0"),
+ module.addFunctionExport(funcNames[1], "export1"),
+ module.addFunctionExport(funcNames[2], "export2")
];
- for (i = 0 ; i < module.getNumExports() ; i++) {
+ for (i = 0; i < module.getNumExports(); i++) {
assert(module.getExportByIndex(i) === exps[i]);
}
@@ -955,7 +957,7 @@ function test_for_each() {
data: expected_data[1].split('').map(function(x) { return x.charCodeAt(0) })
}
], false);
- for (i = 0 ; i < module.getNumMemorySegments() ; i++) {
+ for (i = 0; i < module.getNumMemorySegments(); i++) {
var segment = module.getMemorySegmentInfoByIndex(i);
assert(expected_offsets[i] === segment.offset);
var data8 = new Uint8Array(segment.data);
@@ -964,6 +966,18 @@ function test_for_each() {
assert(expected_passive[i] === segment.passive);
}
+ var constExprRef = module.i32.const(0);
+ module.setFunctionTable(1, 0xffffffff, funcNames, constExprRef);
+
+ var ftable = module.getFunctionTable();
+ assert(false === ftable.imported);
+ assert(1 === ftable.segments.length);
+ assert(constExprRef === ftable.segments[0].offset);
+ assert(3 === ftable.segments[0].names.length);
+ for (i = 0; i < ftable.segments[0].names.length; i++) {
+ assert(funcNames[i] === ftable.segments[0].names[i]);
+ }
+
console.log(module.emitText());
module.dispose();
}
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index c86b276d5..00e5710a9 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -10317,6 +10317,8 @@ sizeof Literal: 24
(memory $0 1 256)
(data (i32.const 10) "hello, world")
(data (global.get $a-global) "segment data 2")
+ (table $0 1 funcref)
+ (elem (i32.const 0) $fn0 $fn1 $fn2)
(global $a-global i32 (i32.const 125))
(export "export0" (func $fn0))
(export "export1" (func $fn1))