[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / microbenchmarks / poly-proto-put-transition-speed.js
1 function assert(b, m) {
2     if (!b)
3         throw new Error("Bad:" + m);
4 }
5
6 function makePolyProtoObject() {
7     function foo() {
8         class C {
9             constructor() { this._field = 42; }
10         };
11         return new C;
12     }
13     for (let i = 0; i < 15; ++i)
14         foo();
15     return foo();
16 }
17
18 let global;
19
20 function performSet(o) {
21     o.p = 20;
22 }
23
24 let items = [];
25 for (let i = 0; i < 25; ++i) {
26     let item = makePolyProtoObject();
27     item.__proto__ = null;
28     items.push(item);
29 }
30
31 let start = Date.now();
32 for (let i = 0; i < 100000; ++i) {
33     for (let i = 0; i < items.length; ++i) {
34         let obj = items[i];
35         performSet(obj);
36         assert(Object.hasOwnProperty.call(obj, "p"));
37         assert(obj.p === 20);
38         assert(obj._field === 42);
39     }
40
41 }
42 if (false)
43     print(Date.now() - start);