Source code
Revision control
Copy as Markdown
Other Tools
function test() {
// Mutating Array.prototype.constructor pops the fuse. A no-op change is fine.
newGlobal().evaluate(`
assertEq(getFuseState().OptimizeArraySpeciesFuse.intact, true);
let p = Array.prototype.constructor;
Array.prototype.constructor = p;
assertEq(getFuseState().OptimizeArraySpeciesFuse.intact, true);
Array.prototype.constructor = Object;
assertEq(getFuseState().OptimizeArraySpeciesFuse.intact, false);
`);
// Mutating Array[Symbol.species] pops the fuse.
newGlobal().evaluate(`
assertEq(getFuseState().OptimizeArraySpeciesFuse.intact, true);
delete Array[Symbol.species];
assertEq(getFuseState().OptimizeArraySpeciesFuse.intact, false);
`);
assertEq(getUseCounterResults().OptimizeArraySpeciesFuse, 2);
}
test();