Beispiel #1
0
        public void ConnectTo(GraphBlock to)
        {
            if (Exited || OutBlocks.Contains(to))
            {
                return;
            }

            OutBlocks.Add(to);
            to.InBlocks.Add(this);
        }
Beispiel #2
0
        public override string ToString()
        {
            var inBlocks  = string.Join(", ", InBlocks.Select(x => x.Id));
            var outBlocks = string.Join(", ", OutBlocks.Select(x => x.Id));
            var idom      = IDom == null ? "null" : IDom.Id.ToString();
            var doms      = string.Join(", ", Dominators.Select(x => x.Id));
            var children  = string.Join(", ", DominantChildren.Select(x => x.Id));
            var df        = string.Join(", ", DominanceFrontiers.Select(x => x.Id));
            var variables = string.Join(", ", Variables);

            return($"Block {Id} ({Name}): nodes={Nodes.Count}, exited={Exited}, in=({inBlocks}), out=({outBlocks}), idom={idom}, doms=({doms}), domchildren=({children}), df=({df}), variables=({variables})");
        }