summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/bug1073861.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/ion/bug1073861.js')
-rw-r--r--js/src/jit-test/tests/ion/bug1073861.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/bug1073861.js b/js/src/jit-test/tests/ion/bug1073861.js
new file mode 100644
index 000000000..fe837c45c
--- /dev/null
+++ b/js/src/jit-test/tests/ion/bug1073861.js
@@ -0,0 +1,69 @@
+function a(a, b, c, g) {
+ for (;;) {
+ if (0 > c) return a;
+ a: {
+ for (;;) {
+ var k = a.forward[c];
+ if (t(k))
+ if (k.key < b) a = k;
+ else break a;
+ else break a
+ }
+ a = void 0
+ }
+ null !=
+ g && (g[c] = a);
+ c -= 1
+ }
+}
+
+function t(a) {
+ return null != a && !1 !== a
+}
+
+
+var d = {forward: [{},null,{}]}
+for (var i=0; i < 1000; i++) {
+ a(d, 0, 1, null);
+ a(d, 0, 0, null);
+}
+
+
+
+
+function test(a) {
+ var t = a[0]
+ if (t) {
+ return t.test;
+ }
+}
+
+function test2(a) {
+ var t = a[0]
+ if (t) {
+ if (t) {
+ return t.test;
+ }
+ }
+}
+
+function test3(a) {
+ var t = a[0]
+ if (t !== null) {
+ if (t !== undefined) {
+ return t.test;
+ }
+ }
+}
+
+var a = [{test:1}]
+var b = [undefined]
+assertEq(test(b), undefined)
+assertEq(test(a), 1)
+assertEq(test(a), 1)
+assertEq(test2(b), undefined)
+assertEq(test2(a), 1)
+assertEq(test2(a), 1)
+assertEq(test3(b), undefined)
+assertEq(test3(a), 1)
+assertEq(test3(a), 1)