summaryrefslogtreecommitdiff
path: root/test/binaryen.js/tail_calls.js
blob: 7ad0bfddd80e3d5c065e3f5ae9a0e4e9329eaf8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var module = new binaryen.Module();

module.setFeatures(binaryen.Features.TailCall);

module.addTableImport("0", "env", "table");

var foo = module.addFunction(
  "foo",
  binaryen.none,
  binaryen.none,
  [],
  module.returnCall("foo", [], binaryen.none, binaryen.none)
);

var bar = module.addFunction(
  "bar",
  binaryen.none,
  binaryen.none,
  [],
  module.returnCallIndirect(
    module.i32.const(0),
    [],
    binaryen.none,
    binaryen.none
  )
);

assert(module.validate());

console.log(
  binaryen.getExpressionInfo(binaryen.getFunctionInfo(foo).body).isReturn
);

console.log(
  binaryen.getExpressionInfo(binaryen.getFunctionInfo(bar).body).isReturn
);