예제 #1
0
 public sealed override object VisitCFGExitBlock(ExitBlock x)
 {
     if (IsExplored(x))
     {
         return(x);
     }
     else
     {
         x.Tag = ExploredColor;
         return(MapIfUpdated(x, OnVisitCFGExitBlock(x)));
     }
 }
예제 #2
0
 public virtual void VisitCFGExitBlock(ExitBlock x)
 {
     VisitCFGBlock(x);
 }
예제 #3
0
        public override object VisitCFGExitBlock(ExitBlock x)
        {
            Debug.Assert(x.NextEdge == null);

            return(x.Update(VisitList(x.Statements)));
        }
예제 #4
0
 public sealed override object VisitCFGExitBlock(ExitBlock x) => Repair(x);
예제 #5
0
 public virtual ExitBlock OnVisitCFGExitBlock(ExitBlock x) => (ExitBlock)base.VisitCFGExitBlock(x);
예제 #6
0
        public override void VisitCFGExitBlock(ExitBlock x)
        {
            VisitCFGBlock(x);

            // TODO: EdgeToCallers:
            var rtype = _state.GetReturnType();
            if (rtype != x._lastReturnTypeMask)
            {
                x._lastReturnTypeMask = rtype;
                x.Subscribers.ForEach(_worklist.Enqueue);
            }
        }
예제 #7
0
 public virtual void VisitCFGExitBlock(ExitBlock x)
 {
     VisitCFGBlock(x);
 }
예제 #8
0
 public virtual TResult VisitCFGExitBlock(ExitBlock x) => DefaultVisitBlock(x);