Lines Matching refs:cUnit
23 static void recordDFSPreOrder(CompilationUnit *cUnit, BasicBlock *block) in recordDFSPreOrder() argument
30 dvmInsertGrowableList(&cUnit->dfsOrder, block->id); in recordDFSPreOrder()
32 if (block->fallThrough) recordDFSPreOrder(cUnit, block->fallThrough); in recordDFSPreOrder()
33 if (block->taken) recordDFSPreOrder(cUnit, block->taken); in recordDFSPreOrder()
43 recordDFSPreOrder(cUnit, succBB); in recordDFSPreOrder()
50 static void computeDFSOrder(CompilationUnit *cUnit) in computeDFSOrder() argument
53 if (cUnit->dfsOrder.elemList == NULL) { in computeDFSOrder()
54 dvmInitGrowableList(&cUnit->dfsOrder, cUnit->numBlocks); in computeDFSOrder()
57 cUnit->dfsOrder.numUsed = 0; in computeDFSOrder()
60 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerClearVisitedFlag, in computeDFSOrder()
64 recordDFSPreOrder(cUnit, cUnit->entryBlock); in computeDFSOrder()
65 cUnit->numReachableBlocks = cUnit->dfsOrder.numUsed; in computeDFSOrder()
72 static bool fillDefBlockMatrix(CompilationUnit *cUnit, BasicBlock *bb) in fillDefBlockMatrix() argument
83 dvmCompilerSetBit(cUnit->defBlockMatrix[idx], bb->id); in fillDefBlockMatrix()
88 static void computeDefBlockMatrix(CompilationUnit *cUnit) in computeDefBlockMatrix() argument
90 int numRegisters = cUnit->numDalvikRegisters; in computeDefBlockMatrix()
92 cUnit->defBlockMatrix = (BitVector **) in computeDefBlockMatrix()
98 cUnit->defBlockMatrix[i] = dvmCompilerAllocBitVector(cUnit->numBlocks, in computeDefBlockMatrix()
101 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerFindLocalLiveIn, in computeDefBlockMatrix()
104 dvmCompilerDataFlowAnalysisDispatcher(cUnit, fillDefBlockMatrix, in computeDefBlockMatrix()
108 if (cUnit->jitMode == kJitMethod) { in computeDefBlockMatrix()
113 int inReg = cUnit->method->registersSize - cUnit->method->insSize; in computeDefBlockMatrix()
114 for (; inReg < cUnit->method->registersSize; inReg++) { in computeDefBlockMatrix()
115 dvmCompilerSetBit(cUnit->defBlockMatrix[inReg], in computeDefBlockMatrix()
116 cUnit->entryBlock->id); in computeDefBlockMatrix()
122 static void computeDomPostOrderTraversal(CompilationUnit *cUnit, BasicBlock *bb) in computeDomPostOrderTraversal() argument
126 GrowableList *blockList = &cUnit->blockList; in computeDomPostOrderTraversal()
134 computeDomPostOrderTraversal(cUnit, dominatedBB); in computeDomPostOrderTraversal()
138 dvmInsertGrowableList(&cUnit->domPostOrderTraversal, bb->id); in computeDomPostOrderTraversal()
142 cUnit->hasLoop = true; in computeDomPostOrderTraversal()
161 static bool computeDominanceFrontier(CompilationUnit *cUnit, BasicBlock *bb) in computeDominanceFrontier() argument
163 GrowableList *blockList = &cUnit->blockList; in computeDominanceFrontier()
208 static bool initializeDominationInfo(CompilationUnit *cUnit, BasicBlock *bb) in initializeDominationInfo() argument
210 int numTotalBlocks = cUnit->blockList.numUsed; in initializeDominationInfo()
231 static bool computeBlockDominators(CompilationUnit *cUnit, BasicBlock *bb) in computeBlockDominators() argument
233 GrowableList *blockList = &cUnit->blockList; in computeBlockDominators()
235 BitVector *tempBlockV = cUnit->tempBlockV; in computeBlockDominators()
242 if (bb == cUnit->entryBlock) return false; in computeBlockDominators()
265 static bool computeImmediateDominator(CompilationUnit *cUnit, BasicBlock *bb) in computeImmediateDominator() argument
267 GrowableList *blockList = &cUnit->blockList; in computeImmediateDominator()
268 BitVector *tempBlockV = cUnit->tempBlockV; in computeImmediateDominator()
272 if (bb == cUnit->entryBlock) return false; in computeImmediateDominator()
308 static void computeDominators(CompilationUnit *cUnit) in computeDominators() argument
310 int numReachableBlocks = cUnit->numReachableBlocks; in computeDominators()
311 int numTotalBlocks = cUnit->blockList.numUsed; in computeDominators()
314 dvmCompilerDataFlowAnalysisDispatcher(cUnit, initializeDominationInfo, in computeDominators()
319 dvmClearAllBits(cUnit->entryBlock->dominators); in computeDominators()
320 dvmSetBit(cUnit->entryBlock->dominators, cUnit->entryBlock->id); in computeDominators()
322 if (cUnit->tempBlockV == NULL) { in computeDominators()
323 cUnit->tempBlockV = dvmCompilerAllocBitVector(numTotalBlocks, in computeDominators()
326 dvmClearAllBits(cUnit->tempBlockV); in computeDominators()
328 dvmCompilerDataFlowAnalysisDispatcher(cUnit, computeBlockDominators, in computeDominators()
332 cUnit->entryBlock->iDom = NULL; in computeDominators()
333 dvmCompilerDataFlowAnalysisDispatcher(cUnit, computeImmediateDominator, in computeDominators()
341 if (cUnit->domPostOrderTraversal.elemList == NULL) { in computeDominators()
342 dvmInitGrowableList(&cUnit->domPostOrderTraversal, numReachableBlocks); in computeDominators()
344 cUnit->domPostOrderTraversal.numUsed = 0; in computeDominators()
347 computeDomPostOrderTraversal(cUnit, cUnit->entryBlock); in computeDominators()
348 assert(cUnit->domPostOrderTraversal.numUsed == in computeDominators()
349 (unsigned) cUnit->numReachableBlocks); in computeDominators()
352 dvmCompilerDataFlowAnalysisDispatcher(cUnit, computeDominanceFrontier, in computeDominators()
384 static bool computeBlockLiveIns(CompilationUnit *cUnit, BasicBlock *bb) in computeBlockLiveIns() argument
386 BitVector *tempDalvikRegisterV = cUnit->tempDalvikRegisterV; in computeBlockLiveIns()
421 static void insertPhiNodes(CompilationUnit *cUnit) in insertPhiNodes() argument
424 const GrowableList *blockList = &cUnit->blockList; in insertPhiNodes()
426 dvmCompilerAllocBitVector(cUnit->numBlocks, false); in insertPhiNodes()
428 dvmCompilerAllocBitVector(cUnit->numBlocks, false); in insertPhiNodes()
430 dvmCompilerAllocBitVector(cUnit->numBlocks, false); in insertPhiNodes()
432 cUnit->tempDalvikRegisterV = in insertPhiNodes()
433 dvmCompilerAllocBitVector(cUnit->numDalvikRegisters, false); in insertPhiNodes()
435 dvmCompilerDataFlowAnalysisDispatcher(cUnit, computeBlockLiveIns, in insertPhiNodes()
440 for (dalvikReg = 0; dalvikReg < cUnit->numDalvikRegisters; dalvikReg++) { in insertPhiNodes()
444 dvmCopyBitVector(inputBlocks, cUnit->defBlockMatrix[dalvikReg]); in insertPhiNodes()
472 cUnit->defBlockMatrix[dalvikReg]); in insertPhiNodes()
501 static bool insertPhiNodeOperands(CompilationUnit *cUnit, BasicBlock *bb) in insertPhiNodeOperands() argument
503 BitVector *ssaRegV = cUnit->tempSSARegisterV; in insertPhiNodeOperands()
505 GrowableList *blockList = &cUnit->blockList; in insertPhiNodeOperands()
514 (int) dvmGrowableListGetElement(cUnit->ssaToDalvikMap, ssaReg); in insertPhiNodeOperands()
557 void dvmCompilerMethodSSATransformation(CompilationUnit *cUnit) in dvmCompilerMethodSSATransformation() argument
560 computeDFSOrder(cUnit); in dvmCompilerMethodSSATransformation()
563 computeDominators(cUnit); in dvmCompilerMethodSSATransformation()
566 dvmInitializeSSAConversion(cUnit); in dvmCompilerMethodSSATransformation()
569 computeDefBlockMatrix(cUnit); in dvmCompilerMethodSSATransformation()
572 insertPhiNodes(cUnit); in dvmCompilerMethodSSATransformation()
575 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerDoSSAConversion, in dvmCompilerMethodSSATransformation()
583 cUnit->tempSSARegisterV = dvmCompilerAllocBitVector(cUnit->numSSARegs, in dvmCompilerMethodSSATransformation()
587 dvmCompilerDataFlowAnalysisDispatcher(cUnit, insertPhiNodeOperands, in dvmCompilerMethodSSATransformation()
593 bool dvmCompilerBuildLoop(CompilationUnit *cUnit) in dvmCompilerBuildLoop() argument
596 computeDFSOrder(cUnit); in dvmCompilerBuildLoop()
599 computeDominators(cUnit); in dvmCompilerBuildLoop()
602 if (dvmCompilerFilterLoopBlocks(cUnit) == false) in dvmCompilerBuildLoop()
606 computeDFSOrder(cUnit); in dvmCompilerBuildLoop()
609 computeDominators(cUnit); in dvmCompilerBuildLoop()
612 dvmInitializeSSAConversion(cUnit); in dvmCompilerBuildLoop()
615 computeDefBlockMatrix(cUnit); in dvmCompilerBuildLoop()
618 insertPhiNodes(cUnit); in dvmCompilerBuildLoop()
621 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerDoSSAConversion, in dvmCompilerBuildLoop()
629 cUnit->tempSSARegisterV = dvmCompilerAllocBitVector(cUnit->numSSARegs, in dvmCompilerBuildLoop()
633 dvmCompilerDataFlowAnalysisDispatcher(cUnit, insertPhiNodeOperands, in dvmCompilerBuildLoop()
638 dvmDumpCFG(cUnit, "/sdcard/cfg/"); in dvmCompilerBuildLoop()