public void DebugSequencePoint(ISourceLineInfo sourceInfo)
{
Debug.Assert(_isDebug && _lastSourceInfo != null);
Debug.Assert(sourceInfo != null);
// When emitting sequence points, be careful to always follow two rules:
// 1. Never emit adjacent sequence points, as this messes up the debugger. We guarantee this by
// always emitting a Nop before every sequence point.
// 2. The runtime enforces a rule that BP sequence points can only appear at zero stack depth,
// or if a NOP instruction is placed before them. We guarantee this by always emitting a Nop
// before every sequence point.
// <spec>http://devdiv/Documents/Whidbey/CLR/CurrentSpecs/Debugging%20and%20Profiling/JIT-Determined%20Sequence%20Points.doc</spec>
Emit(OpCodes.Nop);
MarkSequencePoint(sourceInfo);
}