1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/basic/testMissingProperties.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,49 @@ 1.4 +function isnan(n) { return n !== n } 1.5 + 1.6 +function f(x) { 1.7 + var sum = 0; 1.8 + for (var i = 0; i < 100; ++i) 1.9 + sum += x.x; 1.10 + return sum; 1.11 +} 1.12 +var o = {}; 1.13 +assertEq(isnan(f(o)), true); 1.14 +o.x = 1; 1.15 +assertEq(f(o), 100); 1.16 +var o = {a:1, b:2}; 1.17 +assertEq(isnan(f(o)), true); 1.18 +o.x = 2; 1.19 +assertEq(f(o), 200); 1.20 + 1.21 +function g(x) { 1.22 + var sum = 0; 1.23 + for (var i = 0; i < 100; ++i) 1.24 + sum += x.x; 1.25 + return sum; 1.26 +} 1.27 +var o = {c:1, x:1}; 1.28 +assertEq(g(o), 100); 1.29 +var o = {}; 1.30 +assertEq(isnan(g(o)), true); 1.31 + 1.32 +function h(x) { 1.33 + var sum = 0; 1.34 + for (var i = 0; i < 100; ++i) 1.35 + sum += x.x; 1.36 + return sum; 1.37 +} 1.38 + 1.39 +var proto1 = {}; 1.40 +var proto2 = Object.create(proto1); 1.41 +var o = Object.create(proto2); 1.42 +assertEq(isnan(f(o)), true); 1.43 +assertEq(isnan(g(o)), true); 1.44 +assertEq(isnan(h(o)), true); 1.45 +proto2.x = 2; 1.46 +assertEq(f(o), 200); 1.47 +assertEq(g(o), 200); 1.48 +assertEq(h(o), 200); 1.49 +var o = {} 1.50 +assertEq(isnan(f(o)), true); 1.51 +assertEq(isnan(g(o)), true); 1.52 +assertEq(isnan(h(o)), true);