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