public virtual void BeginFinallyBlock()
{
if (this.m_currExcStackCount == 0)
{
throw new NotSupportedException(Environment.GetResourceString("Argument_NotInExceptionBlock"));
}
__ExceptionInfo info = this.m_currExcStack[this.m_currExcStackCount - 1];
int currentState = info.GetCurrentState();
Label endLabel = info.GetEndLabel();
int endCatchAddr = 0;
if (currentState != 0)
{
this.Emit(OpCodes.Leave, endLabel);
endCatchAddr = this.m_length;
}
this.MarkLabel(endLabel);
Label lbl = this.DefineLabel();
info.SetFinallyEndLabel(lbl);
this.Emit(OpCodes.Leave, lbl);
if (endCatchAddr == 0)
{
endCatchAddr = this.m_length;
}
info.MarkFinallyAddr(this.m_length, endCatchAddr);
}