bb99391546539875c0635a1f0a108d45e4f362c5
[WebKit-https.git] / JSTests / stress / has-own-property-name-cache-symbol-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 symbolPool = [];
9 const numSymbols = 800;
10 for (let i = 0; i < numSymbols; ++i)
11     symbolPool.push(Symbol());
12
13 for (let i = 0; i < 10000; i++) {
14     let num = (Math.random() * numSymbols) | 0;
15     let o = {};
16     for (let i = 0; i < num; ++i) {
17         o[symbolPool[i]] = 25; 
18     }
19     objs.push(o);
20 }
21
22 function foo(o) {
23     let props = Object.getOwnPropertySymbols(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 }