| function isnan(n) { return n !== n } |
| |
| function f(x) { |
| var sum = 0; |
| for (var i = 0; i < 100; ++i) |
| sum += x.x; |
| return sum; |
| } |
| var o = {}; |
| assertEq(isnan(f(o)), true); |
| o.x = 1; |
| assertEq(f(o), 100); |
| var o = {a:1, b:2}; |
| assertEq(isnan(f(o)), true); |
| o.x = 2; |
| assertEq(f(o), 200); |
| |
| function g(x) { |
| var sum = 0; |
| for (var i = 0; i < 100; ++i) |
| sum += x.x; |
| return sum; |
| } |
| var o = {c:1, x:1}; |
| assertEq(g(o), 100); |
| var o = {}; |
| assertEq(isnan(g(o)), true); |
| |
| function h(x) { |
| var sum = 0; |
| for (var i = 0; i < 100; ++i) |
| sum += x.x; |
| return sum; |
| } |
| |
| var proto1 = {}; |
| var proto2 = Object.create(proto1); |
| var o = Object.create(proto2); |
| assertEq(isnan(f(o)), true); |
| assertEq(isnan(g(o)), true); |
| assertEq(isnan(h(o)), true); |
| proto2.x = 2; |
| assertEq(f(o), 200); |
| assertEq(g(o), 200); |
| assertEq(h(o), 200); |
| var o = {} |
| assertEq(isnan(f(o)), true); |
| assertEq(isnan(g(o)), true); |
| assertEq(isnan(h(o)), true); |