diff options
author | COFFEETALES <46571757+COFFEETALES@users.noreply.github.com> | 2020-02-20 20:18:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-20 11:18:55 -0800 |
commit | 42e566c7983ef54e1fedf8ec2addfb23153509fa (patch) | |
tree | 4a59175a2b0c8140e528d156a4cd96fbbb4d66da /test/binaryen.js | |
parent | 0761f5d1b8cc2bf6041370706e82c80e5881d0b0 (diff) | |
download | binaryen-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.js | 32 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 2 |
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)) |