Lines Matching defs:bb

70  * register idx is defined in BasicBlock bb.
72 static bool fillDefBlockMatrix(CompilationUnit *cUnit, BasicBlock *bb)
74 if (bb->dataFlowInfo == NULL) return false;
78 dvmBitVectorIteratorInit(bb->dataFlowInfo->defV, &iterator);
82 /* Block bb defines register idx */
83 dvmCompilerSetBit(cUnit->defBlockMatrix[idx], bb->id);
122 static void computeDomPostOrderTraversal(CompilationUnit *cUnit, BasicBlock *bb)
125 dvmBitVectorIteratorInit(bb->iDominated, &bvIterator);
138 dvmInsertGrowableList(&cUnit->domPostOrderTraversal, bb->id);
141 if (bb->taken && dvmIsBitSet(bb->dominators, bb->taken->id)) {
161 static bool computeDominanceFrontier(CompilationUnit *cUnit, BasicBlock *bb)
166 if (bb->taken) {
167 checkForDominanceFrontier(bb, bb->taken);
169 if (bb->fallThrough) {
170 checkForDominanceFrontier(bb, bb->fallThrough);
172 if (bb->successorBlockList.blockListType != kNotUsed) {
174 dvmGrowableListIteratorInit(&bb->successorBlockList.blocks,
181 checkForDominanceFrontier(bb, succBB);
187 dvmBitVectorIteratorInit(bb->iDominated, &bvIterator);
200 checkForDominanceFrontier(bb, dfUpBlock);
208 static bool initializeDominationInfo(CompilationUnit *cUnit, BasicBlock *bb)
212 if (bb->dominators == NULL ) {
213 bb->dominators = dvmCompilerAllocBitVector(numTotalBlocks,
215 bb->iDominated = dvmCompilerAllocBitVector(numTotalBlocks,
217 bb->domFrontier = dvmCompilerAllocBitVector(numTotalBlocks,
220 dvmClearAllBits(bb->dominators);
221 dvmClearAllBits(bb->iDominated);
222 dvmClearAllBits(bb->domFrontier);
225 dvmSetInitialBits(bb->dominators, numTotalBlocks);
231 static bool computeBlockDominators(CompilationUnit *cUnit, BasicBlock *bb)
242 if (bb == cUnit->entryBlock) return false;
247 dvmBitVectorIteratorInit(bb->predecessors, &bvIterator);
256 dvmSetBit(tempBlockV, bb->id);
257 if (dvmCompareBitVectors(tempBlockV, bb->dominators)) {
258 dvmCopyBitVector(bb->dominators, tempBlockV);
265 static bool computeImmediateDominator(CompilationUnit *cUnit, BasicBlock *bb)
272 if (bb == cUnit->entryBlock) return false;
274 dvmCopyBitVector(tempBlockV, bb->dominators);
275 dvmClearBit(tempBlockV, bb->id);
283 bb->iDom = iDom;
299 /* Set the immediate dominator block for bb */
300 bb->iDom = iDom;
302 /* Add bb to the iDominated set of the immediate dominator block */
303 dvmCompilerSetBit(iDom->iDominated, bb->id);
384 static bool computeBlockLiveIns(CompilationUnit *cUnit, BasicBlock *bb)
388 if (bb->dataFlowInfo == NULL) return false;
389 dvmCopyBitVector(tempDalvikRegisterV, bb->dataFlowInfo->liveInV);
390 if (bb->taken && bb->taken->dataFlowInfo)
391 computeSuccLiveIn(tempDalvikRegisterV, bb->taken->dataFlowInfo->liveInV,
392 bb->dataFlowInfo->defV);
393 if (bb->fallThrough && bb->fallThrough->dataFlowInfo)
395 bb->fallThrough->dataFlowInfo->liveInV,
396 bb->dataFlowInfo->defV);
397 if (bb->successorBlockList.blockListType != kNotUsed) {
399 dvmGrowableListIteratorInit(&bb->successorBlockList.blocks,
409 bb->dataFlowInfo->defV);
413 if (dvmCompareBitVectors(tempDalvikRegisterV, bb->dataFlowInfo->liveInV)) {
414 dvmCopyBitVector(bb->dataFlowInfo->liveInV, tempDalvikRegisterV);
501 static bool insertPhiNodeOperands(CompilationUnit *cUnit, BasicBlock *bb)
509 for (mir = bb->firstMIRInsn; mir; mir = mir->next) {
520 dvmBitVectorIteratorInit(bb->predecessors, &bvIterator);