protected override void EmitFinallyBody (EmitContext ec)
{
//
// if (lock_taken) Monitor.Exit (expr_copy)
//
Label skip = ec.DefineLabel ();
if (lock_taken != null) {
lock_taken.Emit (ec);
ec.Emit (OpCodes.Brfalse_S, skip);
}
expr_copy.Emit (ec);
ec.Emit (OpCodes.Call, TypeManager.void_monitor_exit_object);
ec.MarkLabel (skip);
}