internal void FlowsTo(VariableAnalysis.Block next) { if (this._successors.IndexOf(next) < 0) { this._successors.Add(next); next._predecessors.Add(this); } }
private static void VisitDepthFirstOrder(VariableAnalysis.Block block, List <VariableAnalysis.Block> visitData) { if (!object.ReferenceEquals(block._visitData, visitData)) { block._visitData = visitData; foreach (VariableAnalysis.Block block2 in block._successors) { VisitDepthFirstOrder(block2, visitData); } visitData.Add(block); } }
internal LoopGotoTargets(string label, VariableAnalysis.Block breakTarget, VariableAnalysis.Block continueTarget) { this.Label = label; this.BreakTarget = breakTarget; this.ContinueTarget = continueTarget; }
internal static List <VariableAnalysis.Block> GenerateReverseDepthFirstOrder(VariableAnalysis.Block block) { List <VariableAnalysis.Block> visitData = new List <VariableAnalysis.Block>(); VisitDepthFirstOrder(block, visitData); visitData.Reverse(); visitData.ForEach(delegate(VariableAnalysis.Block b) { b._visitData = null; }); return(visitData); }