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