//@ defaultRun
//@ runNoLLInt("--useConcurrentJIT=false", "--forceEagerCompilation=True")

// This is a regression test that verifies we handle direct arguments as ArrayStorage.  This test should complete and not crash.
// It is a reduction of a fuzzing bug produced testcase.  All of the code present was needed to reproduce the issue.

let a;
let f2;
let args;

function setup() {
    a = [0];
    a.unshift(0);
    for (let z of [4, 4, 4, 4, 4]) {};
    new Float64Array(a);
    f2 = function() {};
    args = arguments;
    args.length = 0;
};

function forOfArray() {
    for (let z of [true, true, true, true, true, true, true]) {
    }
}

function forOfArgs() {
    for (let v of args) {
    }
}

function callEveryOnArgs() {
    for (i = 0; i < 1000; ++i) {
        Array.prototype.every.call(args, f2, {});
    }
}

setup();
forOfArray();
forOfArgs();
callEveryOnArgs();
