public BasicBlockStub(Variable var, BasicBlock block) { prev = new ArrayList(); next = new ArrayList(); isEmpty = true; foreach (ManageVar node in var.UsersArray) isEmpty &= (node.Options[BasicBlock.BASIC_BLOCK_OPTION] as BasicBlock) != block; usageArray = new NodeArray(); if (! isEmpty) { foreach (Node node in block.Body) if (node is ManageVar) { ManageVar usage = node as ManageVar; if (usage.Var == var) usageArray.Add(usage); } } }
private RemoveStackTop newRemoveStackTop(BasicBlock block) { RemoveStackTop result = new RemoveStackTop(); result.Options[BasicBlock.BASIC_BLOCK_OPTION] = block; return result; }
//Andrew private void ReConstruct() { mbb.RemoveOption(BasicBlock.BASIC_BLOCK_OPTION); GraphProcessor processor = new GraphProcessor(); BasicBlocksBuilder builder = new BasicBlocksBuilder(processor); entry = builder.createBasicBlock(); builder.AddTask(mbb,entry); processor.Process(); blockList = builder.BlockList; }
public BasicBlocksGraph(MethodBodyBlock methodBodyBlock) { mbb = methodBodyBlock; mbb.RemoveOption(BasicBlock.BASIC_BLOCK_OPTION); GraphProcessor processor = new GraphProcessor(); BasicBlocksBuilder builder = new BasicBlocksBuilder(processor); entry = builder.createBasicBlock(); builder.AddTask(methodBodyBlock,entry); processor.Process(); blockList = builder.BlockList; }
private DuplicateStackTop newDuplicateStackTop(BasicBlock block) { DuplicateStackTop result = new DuplicateStackTop(); result.Options[BasicBlock.BASIC_BLOCK_OPTION] = block; return result; }
public void Remove(BasicBlock block) { blocks.Remove(block); }
private void AddPrevBasicBlock(BasicBlock prevBasicBlock) { if (prev.blocks.IndexOf(prevBasicBlock) == -1) prev.blocks.Add(prevBasicBlock); }
internal BasicBlock createBasicBlock() { BasicBlock result = new BasicBlock(); result.index = blockList.Count; blockList.blocks.Add(result); return result; }
internal void AddNextBasicBlock(BasicBlock nextBasicBlock) { if (next.blocks.IndexOf(nextBasicBlock) == -1) { next.blocks.Add(nextBasicBlock); nextBasicBlock.AddPrevBasicBlock(this); } }
internal void AddLink(BasicBlock link) { if (links.blocks.IndexOf(link) == -1) links.blocks.Add(link); }