public BasicBlockStatement(BasicBlockStatement predecessor) { if (predecessor != null) { predecessor.AddSuccessor(this); } }
public ControlStatement(BasicBlockStatement predecessor, string prefix, BasicBlockStatement body) : base(predecessor) { _prefix = prefix; Add(body); body.ControlFlowDone = true; _startOffset = body.StartOffset; }
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); }
internal void AddSuccessor(BasicBlockStatement statement) { statement._predecessors.Add(this); _successors.Add(statement); }
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; }