diff options
Diffstat (limited to 'src/msil')
-rw-r--r-- | src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala b/src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala index bf8eade0cd..ea93d6c606 100644 --- a/src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala +++ b/src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala @@ -381,7 +381,9 @@ import ILGenerator._ * (MSIL) instruction stream. */ def BeginFinallyBlock() { - Emit(OpCodes.Leave, excStack.peekLabel()) + val endExc: Label = excStack.popLabel() + Emit(OpCodes.Leave, endExc) + excStack.push(Label.Finally, endExc) emitSpecialLabel(Label.Finally) } @@ -482,9 +484,7 @@ import ILGenerator._ // compute new lastLabel (next label) val stackSize: Int = lastLabel.getStacksize() + overridePOPUSH if (stackSize < 0) { - throw new RuntimeException - //System.err.println - ("ILGenerator.emit(): Stack underflow in method: " + owner) + throw new RuntimeException("ILGenerator.emit(): Stack underflow in method: " + owner) } if (stackSize > maxstack) maxstack = stackSize |