summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/jaeger/recompile/arith.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/jaeger/recompile/arith.js')
-rw-r--r--js/src/jit-test/tests/jaeger/recompile/arith.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/jaeger/recompile/arith.js b/js/src/jit-test/tests/jaeger/recompile/arith.js
new file mode 100644
index 0000000000..a705a2937b
--- /dev/null
+++ b/js/src/jit-test/tests/jaeger/recompile/arith.js
@@ -0,0 +1,49 @@
+
+/* Handle recompilation of arithmetic operations, and on-stack int -> double conversion. */
+
+function add(x, y)
+{
+ var z = x + y;
+ assertEq(z, 2147483732);
+ assertEq(z - 10, 2147483722);
+}
+add(0x7ffffff0, 100);
+
+function mul(x, y)
+{
+ var z = x * y;
+ assertEq(z, 4294967264);
+}
+mul(0x7ffffff0, 2);
+
+function div1(x, y)
+{
+ var z = x / y;
+ assertEq(z + 10, 20);
+}
+div1(100, 10);
+
+function div2(x, y)
+{
+ var z = x / y;
+ assertEq(z + 10, 20.5);
+}
+div2(105, 10);
+
+function uncopy(x, y)
+{
+ var q = x;
+ x += y;
+ q++;
+ assertEq(q, 2147483633);
+ assertEq(x, 2147483732);
+}
+uncopy(0x7ffffff0, 100);
+
+function addmore(x, y)
+{
+ var q = (x + 10) + (x + y);
+ assertEq(q, 4294967374);
+ x = q;
+}
+addmore(0x7ffffff0, 100);