test262/implementation-contributed/javascriptcore/stress/spread-correct-global-object-on-exception.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

46 lines
838 B
JavaScript

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