private BlockLogicalConstruct DetermineTheBlock(BlockLogicalConstruct theBlock)
 {
     if (theBlock.get_Entry() as TryFaultLogicalConstruct == null || theBlock.get_Children().get_Count() > 2)
     {
         return(theBlock);
     }
     return((theBlock.get_Entry() as TryFaultLogicalConstruct).get_Try());
 }
Example #2
0
 private void ProcessGotoFlowConstructs(BlockLogicalConstruct theConstruct)
 {
     V_0 = new ILogicalConstruct[theConstruct.get_Children().get_Count()];
     V_1 = 0;
     V_3 = theConstruct.get_Children().GetEnumerator();
     try
     {
         while (V_3.MoveNext())
         {
             V_4                  = (ILogicalConstruct)V_3.get_Current();
             stackVariable14      = V_1;
             V_1                  = stackVariable14 + 1;
             V_0[stackVariable14] = V_4;
         }
     }
     finally
     {
         ((IDisposable)V_3).Dispose();
     }
     Array.Sort <ISingleEntrySubGraph>(V_0);
     V_2 = new HashSet <ILogicalConstruct>();
     V_6 = V_0;
     V_7 = 0;
     while (V_7 < (int)V_6.Length)
     {
         V_8 = V_6[V_7];
         if (this.visitedConstructs.Add(V_8))
         {
             if (this.visitedConstructs.Contains(V_8.get_FollowNode()) || !V_2.Add(V_8.get_FollowNode()))
             {
                 V_8.set_CFGFollowNode(null);
             }
             this.ProcessLogicalConstruct(V_8);
         }
         V_7 = V_7 + 1;
     }
     return;
 }