IXamlILEmitter Emit(Instruction i) { _body.Instructions.Add(i); if (_pendingDebugPoint != null) { _pendingDebugPoint.Create(i); _pendingDebugPoint = null; } foreach (var ml in _markedLabels) { ml.Mark(i); } _markedLabels.Clear(); return(this); }
public void InsertSequencePoint(IFileSource file, int line, int position) { if (!_documents.TryGetValue(_method.Module.Assembly, out var documents)) { _documents.Add(_method.Module.Assembly, documents = new Dictionary <string, DocumentHelper>()); } if (!documents.TryGetValue(file.FilePath, out var doc)) { documents[file.FilePath] = doc = new DocumentHelper(file); } if (_pendingDebugPoint == null) { if (_lastDebugPoint == null || !(_lastDebugPoint.Document == doc && _lastDebugPoint.Line == line && _lastDebugPoint.Position == position)) { _pendingDebugPoint = _lastDebugPoint = new CecilDebugPoint(this, doc, line, position); } } }
IXamlIlEmitter Emit(Instruction i) { _body.Instructions.Add(i); if (_pendingDebugPoint != null) { _pendingDebugPoint.Create(i); _pendingDebugPoint = null; } foreach (var ml in _markedLabels) { foreach (var instruction in _body.Instructions) { if (instruction.Operand == ml.Instruction) { instruction.Operand = i; } } ml.Instruction = i; } _markedLabels.Clear(); return(this); }