]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/stress/flatten-oversize-dictionary-object.js
d912b2f9024e2027891f5992808258c399529ce1
[apple/javascriptcore.git] / tests / stress / flatten-oversize-dictionary-object.js
1 var foo = function(o) {
2 return o.baa;
3 };
4
5 noInline(foo);
6
7 (function() {
8 var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
9 var properties = [];
10 var o = {};
11 for (var i = 0; i < letters.length; ++i) {
12 for (var j = 0; j < letters.length; ++j) {
13 for (var k = 0; k < letters.length; ++k) {
14 var property = letters[i] + letters[j] + letters[k];
15 o[property] = i;
16 }
17 }
18 }
19
20 var keys = Object.keys(o);
21 keys.sort();
22 for (var i = keys.length - 1; i >= keys.length - 8000; i--) {
23 delete o[keys[i]];
24 }
25
26 var sum = 0;
27 var iVal = letters.indexOf("b");
28 var niters = 1000;
29 for (var i = 0; i < niters; ++i) {
30 sum += foo(o);
31 }
32
33 if (sum != iVal * niters)
34 throw new Error("incorrect result: " + sum);
35
36 fullGC();
37 })();