const run = new Function("init", "num", `

function value() { return 'v'; }
noInline(value);

const calc = val => {
    let c = 0;
    for (let v = val; v; v >>>= 1) c += v & 1;
    return val * 2 + val / 2 + c;
}

class A {
    constructor(x) { this._v = x; }
    set v(x) { this._v = x; }
    get v() { return this._v; }
}
class B extends A {
    set v(x) { super[value()] = x; }
    get v() { return calc(super[value()]); }
}

const bench = (init, num) => {
    let arr = [];
    for (let i = 0; i != num; ++i) arr.push(new B(init));
    for (let i = 0; i != num; ++i) arr[i].v += i;
    let sum = 0;
    for (let i = 0; i != num; ++i) sum += arr[i].v;
};

bench(init, num);
`);

run(2, 10000);
run(1 << 30, 10000);
run(42.2, 10000);
run(42.5e10, 10000);
