diff options
Diffstat (limited to 'js/src/jit-test/tests/ion/fold-in.js')
-rw-r--r-- | js/src/jit-test/tests/ion/fold-in.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/fold-in.js b/js/src/jit-test/tests/ion/fold-in.js new file mode 100644 index 0000000000..4e0c54cd5d --- /dev/null +++ b/js/src/jit-test/tests/ion/fold-in.js @@ -0,0 +1,44 @@ +// Singleton +function f() { + var res = 0; + for (var i=0; i<500; i++) + res += ("abcd" in Math); + return res; +} +assertEq(f(), 0); +Math.abcd = 3; +assertEq(f(), 500); +delete Math.abcd; +assertEq(f(), 0); + +// Non-singleton +function O(x) { if (x) this.x = 1; } + +var arr = []; +for (var i=0; i<4; i++) + arr.push(new O(i % 2)); + +function g(arr) { + var res = 0; + for (var i=0; i<500; i++) { + var o = arr[i % arr.length]; + res += "x" in o; + res += "abcd" in o; + } + return res; +} +assertEq(g(arr), 250); +arr[0].abcd = 3; +assertEq(g(arr), 375); + +function testPrimitive() { + var x = 7; + var c = 0; + for (var i=0; i<5; i++) { + try { + "z" in x; + } catch(e) { c++; } + } + assertEq(c, 5); +} +testPrimitive(); |