Exemplo n.º 1
0
            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);
                        }
                }
            }
Exemplo n.º 2
0
 private RemoveStackTop newRemoveStackTop(BasicBlock block)
 {
     RemoveStackTop result = new RemoveStackTop();
     result.Options[BasicBlock.BASIC_BLOCK_OPTION] = block;
     return result;
 }
Exemplo n.º 3
0
        //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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
 private DuplicateStackTop newDuplicateStackTop(BasicBlock block)
 {
     DuplicateStackTop result = new DuplicateStackTop();
     result.Options[BasicBlock.BASIC_BLOCK_OPTION] = block;
     return result;
 }
Exemplo n.º 6
0
 public void Remove(BasicBlock block)
 {
     blocks.Remove(block);
 }
Exemplo n.º 7
0
 private void AddPrevBasicBlock(BasicBlock prevBasicBlock)
 {
     if (prev.blocks.IndexOf(prevBasicBlock) == -1)
         prev.blocks.Add(prevBasicBlock);
 }
Exemplo n.º 8
0
 internal BasicBlock createBasicBlock()
 {
     BasicBlock result = new BasicBlock();
     result.index = blockList.Count;
     blockList.blocks.Add(result);
     return result;
 }
Exemplo n.º 9
0
 internal void AddNextBasicBlock(BasicBlock nextBasicBlock)
 {
     if (next.blocks.IndexOf(nextBasicBlock) == -1)
     {
         next.blocks.Add(nextBasicBlock);
         nextBasicBlock.AddPrevBasicBlock(this);
     }
 }
Exemplo n.º 10
0
 internal void AddLink(BasicBlock link)
 {
     if (links.blocks.IndexOf(link) == -1)
         links.blocks.Add(link);
 }