summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js')
-rw-r--r--js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js b/js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js
new file mode 100644
index 000000000..385ea1a02
--- /dev/null
+++ b/js/src/jit-test/tests/ion/inlining/inline-callarg-ubench-no-double2.js
@@ -0,0 +1,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));