Source code

Revision control

Copy as Markdown

Other Tools

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));