Bug 1332881 - Handle stack value in correct order when leaving loop and try-finally

Issue #74
This commit is contained in:
janekptacijarabaci 2018-03-25 12:38:28 +02:00 • committed by Roy Tam
commit ad8ad6e109
2 changed files with 60 additions and 0 deletions

View file

@ -2359,6 +2359,9 @@ NonLocalExitControl::prepareForNonLocalJump(BytecodeEmitter::NestableControl* ta
}
case StatementKind::ForOfLoop:
if (!flushPops(bce_))
return false;
// The iterator and the current value are on the stack.
//
if (emitIteratorClose) {
@ -2378,6 +2381,9 @@ NonLocalExitControl::prepareForNonLocalJump(BytecodeEmitter::NestableControl* ta
break;
case StatementKind::ForInLoop:
if (!flushPops(bce_))
return false;
// The iterator and the current value are on the stack.
if (!bce_->emit1(JSOP_POP)) // ... ITER
return false;