26 lines
476 B
JavaScript
26 lines
476 B
JavaScript
function assert(b) {
|
|
if (!b)
|
|
throw new Error;
|
|
}
|
|
noInline(assert);
|
|
|
|
function foo(...args) {
|
|
return args[0];
|
|
}
|
|
noInline(foo);
|
|
|
|
for (let i = 0; i < 10000; i++) {
|
|
// Warm it up on both in bound and out of bound accesses.
|
|
if (i % 2)
|
|
assert(foo(i) === i);
|
|
else
|
|
assert(foo() === undefined);
|
|
}
|
|
|
|
let newProto = [50];
|
|
newProto.__proto__ = null;
|
|
|
|
Array.prototype.__proto__ = newProto;
|
|
for (let i = 0; i < 10000; i++)
|
|
assert(foo() === 50);
|