1 19 20 package edu.umd.cs.findbugs.ba; 21 22 import java.util.ArrayList ; 23 import java.util.Arrays ; 24 import java.util.Comparator ; 25 import java.util.Iterator ; 26 27 35 public abstract class AbstractBlockOrder implements BlockOrder { 36 private ArrayList <BasicBlock> blockList; 37 38 public AbstractBlockOrder(CFG cfg, Comparator <BasicBlock> comparator) { 39 int numBlocks = cfg.getNumBasicBlocks(), count = 0; 41 BasicBlock[] blocks = new BasicBlock[numBlocks]; 42 for (Iterator <BasicBlock> i = cfg.blockIterator(); i.hasNext();) { 43 blocks[count++] = i.next(); 44 } 45 assert count == numBlocks; 46 47 Arrays.sort(blocks, comparator); 49 50 blockList = new ArrayList <BasicBlock>(numBlocks); 52 for (int i = 0; i < numBlocks; ++i) 53 blockList.add(blocks[i]); 54 } 55 56 public Iterator <BasicBlock> blockIterator() { 57 return blockList.iterator(); 58 } 59 } 60 61 | Popular Tags |