Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| --fast-warmup; --no-threads
function main() {
// Disable Warp compilation, so we don't inline |f|.
with ({}) {}
let begin = 0;
for (let i = 1; i < 30; i++) {
f(begin);
begin = undefined;
}
}
main();
function g(i) {
return i < 3;
}
function f(begin) {
// Loop body is only reachable on the first invocation.
for (let i = begin; i < 5; i++) {
// |arguments| with out-of-bounds access. This adds a guard on the prototype
// of the arguments object.
arguments[100];
// Loop with a call expression. This ensures we emit bail instructions for
// unreachable code after the first invocation.
for (let j = 0; g(j); j++) {}
// Change the prototype of the arguments object. This will cause a failure
// on the prototype guard added above.
arguments.__proto__ = {};
}
}