var globalObjectForObject = $vm.globalObjectForObject;

function assert(b) {
    if (!b)
        throw new Error("Bad assertion");
}
function spread(a) {
    return [...a];
}
noInline(spread);

const objectText = `
    let o = {
        [Symbol.iterator]() {
            return {
                next() {
                    return {done: true};
                }
            };
        }
    };
    o;
`;

let o = eval(objectText);
for (let i = 0; i < 1000; i++) {
    if (i % 23 === 0)
        o = eval(objectText);
    spread(o);
}

let myGlobalObject = globalObjectForObject(new Object);

let secondGlobalObject = createGlobalObject();
let o2 = secondGlobalObject.Function("return {};")();

let error = null;
try {
    spread(o2);
} catch(e) {
    error = e;
}

assert(error);
assert(globalObjectForObject(error) === myGlobalObject);
