summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/bigint/bigint-pow-bailout.js
blob: 8b1161b54e034aceef98347694f2f8d6f57b5678 (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
setJitCompilerOption("ion.warmup.trigger", 20);

function testBailout() {
  function f(v, r) {
    for (var i = 0; i < 50; ++i) {
      // Ensure DCE and LICM don't eliminate exponentiation when the power is negative.
      if (i === 0) {
        r();
      }
      1n ** v;
      1n ** v;
      1n ** v;
    }
  }

  var result = [];
  function r() {
    result.push("ok");
  }

  do {
    result.length = 0;
    try {
      f(1n, r);
      f(1n, r);
      f(-1n, r);
    } catch (e) {}
    assertEq(result.length, 3);
  } while (!inIon());
}
testBailout();