[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / microbenchmarks / super-get-by-id-with-this-polymorphic.js
1 const calc = val => {
2     let c = 0;
3     for (let v = val; v; v >>>= 1) c += v & 1;
4     return val * 2 + val / 2 + c;
5 }
6
7 class A {
8     constructor(x) { this._value = x; }
9     set value(x) { this._value = x; }
10     get value() { return this._value; }
11 }
12 class B extends A {
13     set value(x) { super.value = x; }
14     get value() { return calc(super.value); }
15 }
16
17 const bench = (init, num) => {
18     let arr = [];
19     for (let i = 0; i != num; ++i) arr.push(new B(init));
20     for (let i = 0; i != num; ++i) arr[i].value += i;
21     let sum = 0;
22     for (let i = 0; i != num; ++i) sum += arr[i].value;
23 };
24
25 bench(2, 10000);
26 bench(1 << 30, 10000);
27 bench(42.2, 10000);
28 bench(42.5e10, 10000);