public PopTreeGraph Build(MethodDefinition method) { IControlFlowGraph cfg = FlowGraphFactory.CreateControlFlowGraph(method); PopTreeGraph graph = new PopTreeGraph(cfg); foreach (IInstructionBlock block in cfg.Blocks) { PopTreeListBuilder build = new PopTreeListBuilder(); Instruction instruction = block.FirstInstruction; ArrayList instructions = new ArrayList(); while (instruction != null) { instructions.Add(instruction); instruction = instruction.Next; } PopTreeList list = build.Build(instructions); if (list != null) { list.Block = block; graph.Add(list); } } return(graph); }
public PopTreeGraph Build(MethodDefinition method) { IControlFlowGraph cfg = FlowGraphFactory.CreateControlFlowGraph(method); PopTreeGraph graph = new PopTreeGraph( cfg ); foreach (IInstructionBlock block in cfg.Blocks) { PopTreeListBuilder build = new PopTreeListBuilder(); Instruction instruction = block.FirstInstruction; ArrayList instructions = new ArrayList(); while (instruction != null) { instructions.Add(instruction); instruction = instruction.Next; } PopTreeList list = build.Build(instructions); if (list != null) { list.Block = block; graph.Add(list); } } return graph; }