// |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__ = {}; } }