eab029d856fe3e872bd93fdf79257212157b718a
[WebKit-https.git] / JSTests / stress / has-own-property-name-cache-string-keys.js
1 function assert(b) {
2     if (!b)
3         throw new Error("Bad assertion.");
4 }
5 noInline(assert);
6
7 let objs = [];
8 let keyPool = [];
9 const numKeys = 800;
10 for (let i = 0; i < numKeys; ++i)
11     keyPool.push(i + "foo");
12
13 for (let i = 0; i < 10000; i++) {
14     let num = (Math.random() * numKeys) | 0;
15     let o = {};
16     for (let i = 0; i < num; ++i) {
17         o[keyPool[i]] = 25; 
18     }
19     objs.push(o);
20 }
21
22 function foo(o) {
23     let props = Object.getOwnPropertyNames(o);
24     for (let i = 0; i < props.length; ++i) {
25         let s = props[i];
26         assert(o.hasOwnProperty(s));
27     }
28 }
29 noInline(foo);
30
31 let start = Date.now();
32 for (let o of objs) {
33     foo(o);
34 }
35 const verbose = false;
36 if (verbose)
37     print(Date.now() - start);