From 0f17201b1005b85a8bbfd6be668fd9ffcc782375 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Tue, 1 Dec 2009 08:28:07 +0000 Subject: fix msil code generation for exception handlers. --- src/msil/ch/epfl/lamp/compiler/msil/emit/ILGenerator.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/msil/ch/epfl') 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 -- cgit v1.2.3