summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/bug860838-4.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/ion/bug860838-4.js')
-rw-r--r--js/src/jit-test/tests/ion/bug860838-4.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/bug860838-4.js b/js/src/jit-test/tests/ion/bug860838-4.js
new file mode 100644
index 000000000..88804d2b4
--- /dev/null
+++ b/js/src/jit-test/tests/ion/bug860838-4.js
@@ -0,0 +1,54 @@
+function DiagModule(stdlib, foreign) {
+ "use asm";
+
+ var sqrt = stdlib.Math.sqrt;
+ var test = foreign.test;
+ var foo = foreign.foo;
+
+ function square(x) {
+ x = x|0;
+ return ((x|0)+(x|0))|0;
+ }
+
+ function diag() {
+ var x = 0.0;
+ while(1) {
+ test(1, x);
+ x = x+1.0
+ if (x > 15.0)
+ return 0;
+ }
+ return 0;
+ }
+
+ function diag_1() {
+ foo();
+ return 0;
+ }
+
+
+ return { diag: diag, diag_1:diag_1 };
+}
+
+var foreign = {
+ test:function(a,b) {
+ print(a+":"+b)
+ var c = [0.0];
+ if (b > 10)
+ return c[1];
+ return c[0];
+ },
+ foo:function() {
+ with({}) {};
+ gc();
+ }
+}
+
+// make sure foreign is compiled
+
+var fast = DiagModule(this, foreign); // produces AOT-compiled version
+print(fast.diag_1()); // 5
+gc()
+print(fast.diag()); // 5
+
+