let objs = new Array(1000); | |
for (let i of objs.keys()) { | |
let o = {}; | |
// Make the object an uncacheable dictionary. | |
o.foo = 1; | |
delete o.foo; | |
objs[i] = o; | |
} | |
function f(o) { | |
o.foo = 42; | |
} | |
for (let obj of objs) { | |
let setter = new Function(` | |
Object.defineProperty(this, "foo", { | |
writable: true, | |
configurable: true, | |
value: null | |
}); | |
let o = Object.create(this); | |
// Need eval to get a new IC to flatten obj. | |
let str = "for (let i = 0; i < 1000; i++) o.foo"; | |
eval(str); | |
`); | |
obj.__defineSetter__("foo", setter); | |
f(obj); | |
f(obj); | |
} |