/// <summary> /// /// </summary> /// <param name="clause"></param> private void AddClauseLabels(EhClause clause) { AddClauseLabel(clause, clause.TryOffset); AddClauseLabel(clause, clause.TryEnd); AddClauseLabel(clause, clause.HandlerOffset); AddClauseLabel(clause, clause.HandlerEnd); }
/// <summary> /// /// </summary> /// <param name="block"></param> private void ProcessBlock(BasicBlock block) { for (Context context = CreateContext(block); !context.EndOfInstruction; context.GotoNext()) { if (this.labelMapping.ContainsKey(context.Label)) { EhClause clause = this.labelMapping[context.Label]; if (clause.TryOffset == context.Label || clause.HandlerOffset == context.Label) { this.labelMapping.Remove(context.Label); } } } }
/// <summary> /// /// </summary> /// <param name="clause"></param> /// <param name="label"></param> private void AddClauseLabel(EhClause clause, int label) { this.labelMapping[label] = clause; }