Use std::vector<DFCalculateWorkObject> instead of

std::vector<DFCalculateWorkObject *> to reduce malloc/free traffic.

llvm-svn: 35368
This commit is contained in:
Devang Patel 2007-03-26 23:17:19 +00:00
parent 44a7f3a65d
commit 55566a972c
1 changed files with 4 additions and 7 deletions

View File

@ -455,13 +455,12 @@ DominanceFrontier::calculate(const DominatorTree &DT,
BasicBlock *BB = Node->getBlock(); BasicBlock *BB = Node->getBlock();
DomSetType *Result = NULL; DomSetType *Result = NULL;
std::vector<DFCalculateWorkObject *> workList; std::vector<DFCalculateWorkObject> workList;
std::set<BasicBlock *> visited; std::set<BasicBlock *> visited;
DFCalculateWorkObject *W = new DFCalculateWorkObject(BB, NULL, Node, NULL); workList.push_back(DFCalculateWorkObject(BB, NULL, Node, NULL));
workList.push_back(W);
do { do {
DFCalculateWorkObject *currentW = workList.back(); DFCalculateWorkObject *currentW = &workList.back();
assert (currentW && "Missing work object."); assert (currentW && "Missing work object.");
BasicBlock *currentBB = currentW->currentBB; BasicBlock *currentBB = currentW->currentBB;
@ -494,9 +493,7 @@ DominanceFrontier::calculate(const DominatorTree &DT,
DominatorTree::Node *IDominee = *NI; DominatorTree::Node *IDominee = *NI;
BasicBlock *childBB = IDominee->getBlock(); BasicBlock *childBB = IDominee->getBlock();
if (visited.count(childBB) == 0) { if (visited.count(childBB) == 0) {
DFCalculateWorkObject *newW = workList.push_back(DFCalculateWorkObject(childBB, currentBB, IDominee, currentNode));
new DFCalculateWorkObject(childBB, currentBB, IDominee, currentNode);
workList.push_back(newW);
visitChild = true; visitChild = true;
} }
} }