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); |