idempotentCache.js (826B)
1 // Test that we don't attach ICs to idempotent caches that are incompatible 2 // with the cache result type. 3 4 var missingObjs = [{a:1},Object.create({a:2}),{}]; 5 function testMissing(limit) 6 { 7 var res = 0; 8 for (var i = 0; i < 1000; i++) { 9 for (var j = 0; j < missingObjs.length; j++) { 10 var obj = missingObjs[j]; 11 if (j < limit) 12 res += obj.a; 13 } 14 } 15 return res; 16 } 17 assertEq(testMissing(2), 3000); 18 assertEq(testMissing(3), NaN); 19 20 var lengthObjs = [{length:{a:1}},Object.create({length:{a:2}}),[0,1]]; 21 function testArrayLength(limit) 22 { 23 var res = 0; 24 for (var i = 0; i < 1000; i++) { 25 for (var j = 0; j < lengthObjs.length; j++) { 26 var obj = lengthObjs[j]; 27 if (j < limit) 28 res += obj.length.a; 29 } 30 } 31 return res; 32 } 33 assertEq(testArrayLength(2), 3000); 34 assertEq(testArrayLength(3), NaN);