summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js
blob: 385ea1a0260b9e3b1756222fd2adff0911e9da47 (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
function lameFunc(x, y) {
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

function runSomeTimes(func, iters) {
    var result;
    for (var i = 0; i < iters; ++i) {
        result = func(42, 42);
        result = func(42, 42);
    }
    return result;
}

// First, run the inner function to get TI information.
for (var i = 0; i < 100; ++i)
    lameFunc(42, 42);

// Then, run the outer function with the inner function as a CALLARG to get it
// to Ion compile with inlining.
for (var i = 0; i < 11000; ++i)
    runSomeTimes(lameFunc, 1);

// Lastly, now that we're all inlined and compiled, perform the test!
var iterations = 100;
assertEq(84, runSomeTimes(lameFunc, iterations));