Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| --baseline-warmup-threshold=10; --ion-warmup-threshold=100
const BASE_PROPS = 26;
const SHAPES = 4;
const ITERS = 350;
const FINAL_K = 2;
function make(k) {
function g(a, b, c) {}
for (let i = 0; i < BASE_PROPS + k; i++) {
g["x" + i] = i;
}
g.p = 13;
g.r = 37;
return g;
}
function makeObjectName(k) {
const g = make(k);
Object.defineProperty(g, "name", {
value: {marker: 7},
writable: true,
configurable: true,
});
return g;
}
function f(o) {
const x = o.p;
Object.keys(o);
const y = o.name;
return x + y.marker;
}
for (let i = 0; i < ITERS; i++) {
if ((i & 7) === 0) {
f(makeObjectName(i % SHAPES));
} else {
f(make(i % SHAPES));
}
}
print(f(make(FINAL_K)));