Bug 1341339 - Check for duplicates in processIterators

Issue #74
This commit is contained in:
janekptacijarabaci 2018-03-25 14:47:39 +02:00 committed by Roy Tam
commit b8eb17e022
2 changed files with 15 additions and 3 deletions

View file

@ -0,0 +1,9 @@
let m = parseModule(`
function* values() {}
var iterator = values();
for (var i=0; i < 10000; ++i) {
for (var x of iterator) {}
}
`);
m.declarationInstantiation();
m.evaluation();

View file

@ -963,9 +963,12 @@ IonBuilder::processIterators()
Vector<MDefinition*, 8, SystemAllocPolicy> worklist;
for (size_t i = 0; i < iterators_.length(); i++) {
if (!worklist.append(iterators_[i]))
return false;
iterators_[i]->setInWorklist();
MDefinition* iter = iterators_[i];
if (!iter->isInWorklist()) {
if (!worklist.append(iter))
return false;
iter->setInWorklist();
}
}
while (!worklist.empty()) {