Пример #1
0
 public BasicBlockStatement(BasicBlockStatement predecessor)
 {
     if (predecessor != null)
     {
         predecessor.AddSuccessor(this);
     }
 }
Пример #2
0
 public BasicBlockStatement(BasicBlockStatement predecessor)
 {
     if (predecessor != null)
     {
         predecessor.AddSuccessor(this);
     }
 }
Пример #3
0
 public ControlStatement(BasicBlockStatement predecessor, string prefix, BasicBlockStatement body)
     : base(predecessor)
 {
     _prefix = prefix;
     Add(body);
     body.ControlFlowDone = true;
     _startOffset         = body.StartOffset;
 }
Пример #4
0
        private static List <BasicBlockStatement> BuildBasicBlocks(List <ExpressionStatement> statements)
        {
            var blocks       = new List <BasicBlockStatement>();
            var currentBlock = new BasicBlockStatement(null);

            blocks.Add(currentBlock);
            foreach (var statement in statements)
            {
                if (statement.IsTarget || statement.Expression is JumpExpression)
                {
                    currentBlock = new BasicBlockStatement(currentBlock);
                    blocks.Add(currentBlock);
                }
                currentBlock.Add(statement);
                if (statement.Expression is JumpExpression)
                {
                    currentBlock = new BasicBlockStatement(statement.Expression is CondJumpExpression ? currentBlock : null);
                    blocks.Add(currentBlock);
                }
            }
            return(blocks);
        }
Пример #5
0
 internal void AddSuccessor(BasicBlockStatement statement)
 {
     statement._predecessors.Add(this);
     _successors.Add(statement);
 }
Пример #6
0
 private static List<BasicBlockStatement> BuildBasicBlocks(List<ExpressionStatement> statements)
 {
     var blocks = new List<BasicBlockStatement>();
     var currentBlock = new BasicBlockStatement(null);
     blocks.Add(currentBlock);
     foreach (var statement in statements)
     {
         if (statement.IsTarget || statement.Expression is JumpExpression)
         {
             currentBlock = new BasicBlockStatement(currentBlock);
             blocks.Add(currentBlock);
         }
         currentBlock.Add(statement);
         if (statement.Expression is JumpExpression)
         {
             currentBlock = new BasicBlockStatement(statement.Expression is CondJumpExpression ? currentBlock : null);
             blocks.Add(currentBlock);
         }
     }
     return blocks;
 }
Пример #7
0
 internal void AddSuccessor(BasicBlockStatement statement)
 {
     statement._predecessors.Add(this);
     _successors.Add(statement);
 }
Пример #8
0
 public ControlStatement(BasicBlockStatement predecessor, string prefix, BasicBlockStatement body) 
     : base(predecessor)
 {
     _prefix = prefix;
     Add(body);
     body.ControlFlowDone = true;
     _startOffset = body.StartOffset;
 }