• Home
  • Raw
  • Download

Lines Matching refs:cUnit

26 static void dumpConstants(CompilationUnit *cUnit)
29 LOGE("LOOP starting offset: %x", cUnit->entryBlock->startOffset);
30 for (i = 0; i < cUnit->numSSARegs; i++) {
31 if (dvmIsBitSet(cUnit->isConstantV, i)) {
32 int subNReg = dvmConvertSSARegToDalvik(cUnit, i);
35 cUnit->constantValues[i]);
40 static void dumpIVList(CompilationUnit *cUnit)
43 GrowableList *ivList = cUnit->loopAnalysis->ivList;
48 int iv = dvmConvertSSARegToDalvik(cUnit, ivInfo->ssaReg);
57 int biv = dvmConvertSSARegToDalvik(cUnit, ivInfo->basicSSAReg);
70 static void dumpHoistedChecks(CompilationUnit *cUnit)
72 LoopAnalysis *loopAnalysis = cUnit->loopAnalysis;
80 dvmConvertSSARegToDalvik(cUnit, arrayAccessInfo->arrayReg));
82 dvmConvertSSARegToDalvik(cUnit, arrayAccessInfo->ivReg));
95 static BasicBlock *findPredecessorBlock(const CompilationUnit *cUnit, in findPredecessorBlock() argument
104 return (BasicBlock *) dvmGrowableListGetElement(&cUnit->blockList, in findPredecessorBlock()
108 dvmIsBitSet(bb->predecessors, cUnit->entryBlock->id)) { in findPredecessorBlock()
111 if (predIdx == cUnit->entryBlock->id) continue; in findPredecessorBlock()
112 return (BasicBlock *) dvmGrowableListGetElement(&cUnit->blockList, in findPredecessorBlock()
170 static bool isSimpleCountedLoop(CompilationUnit *cUnit) in isSimpleCountedLoop() argument
173 BasicBlock *loopBackBlock = cUnit->entryBlock->fallThrough; in isSimpleCountedLoop()
174 LoopAnalysis *loopAnalysis = cUnit->loopAnalysis; in isSimpleCountedLoop()
194 loopBackBlock = findPredecessorBlock(cUnit, loopBackBlock); in isSimpleCountedLoop()
227 endDalvikReg = dvmConvertSSARegToDalvik(cUnit, endSSAReg); in isSimpleCountedLoop()
236 !dvmIsBitSet(cUnit->isConstantV, endSSAReg)) { in isSimpleCountedLoop()
299 static void updateRangeCheckInfo(CompilationUnit *cUnit, int arrayReg, in updateRangeCheckInfo() argument
303 LoopAnalysis *loopAnalysis = cUnit->loopAnalysis; in updateRangeCheckInfo()
343 static bool doLoopBodyCodeMotion(CompilationUnit *cUnit) in doLoopBodyCodeMotion() argument
345 BasicBlock *loopBody = cUnit->entryBlock->fallThrough; in doLoopBodyCodeMotion()
395 dvmCompilerAbort(cUnit); in doLoopBodyCodeMotion()
400 dvmConvertSSARegToDalvik(cUnit, mir->ssaRep->uses[refIdx]); in doLoopBodyCodeMotion()
416 if (dvmIsBitSet(cUnit->loopAnalysis->isIndVarV, in doLoopBodyCodeMotion()
420 updateRangeCheckInfo(cUnit, mir->ssaRep->uses[refIdx], in doLoopBodyCodeMotion()
429 static void genHoistedChecks(CompilationUnit *cUnit) in genHoistedChecks() argument
432 BasicBlock *entry = cUnit->entryBlock; in genHoistedChecks()
433 LoopAnalysis *loopAnalysis = cUnit->loopAnalysis; in genHoistedChecks()
444 dvmConvertSSARegToDalvik(cUnit, arrayAccessInfo->arrayReg)); in genHoistedChecks()
446 dvmConvertSSARegToDalvik(cUnit, arrayAccessInfo->ivReg)); in genHoistedChecks()
508 dvmCompilerAbort(cUnit); in genHoistedChecks()
521 static bool clearPredecessorVector(struct CompilationUnit *cUnit, in clearPredecessorVector() argument
528 bool dvmCompilerFilterLoopBlocks(CompilationUnit *cUnit) in dvmCompilerFilterLoopBlocks() argument
530 BasicBlock *firstBB = cUnit->entryBlock->fallThrough; in dvmCompilerFilterLoopBlocks()
538 GrowableList *blockList = &cUnit->blockList; in dvmCompilerFilterLoopBlocks()
541 dvmClearAllBits(cUnit->tempBlockV); in dvmCompilerFilterLoopBlocks()
543 dvmCompilerSetBit(cUnit->tempBlockV, cUnit->entryBlock->id); in dvmCompilerFilterLoopBlocks()
544 dvmCompilerSetBit(cUnit->tempBlockV, firstBB->id); in dvmCompilerFilterLoopBlocks()
558 dvmIsBitSet(cUnit->tempBlockV, bodyBB->fallThrough->id)) { in dvmCompilerFilterLoopBlocks()
566 dvmIsBitSet(cUnit->tempBlockV, bodyBB->taken->id)) { in dvmCompilerFilterLoopBlocks()
575 dvmIsBitSet(cUnit->tempBlockV, bodyBB->fallThrough->id)) { in dvmCompilerFilterLoopBlocks()
579 dvmIsBitSet(cUnit->tempBlockV, bodyBB->taken->id)) { in dvmCompilerFilterLoopBlocks()
586 dvmCompilerSetBit(cUnit->tempBlockV, bodyBB->id); in dvmCompilerFilterLoopBlocks()
597 dvmCompilerSetBit(cUnit->tempBlockV, bodyBB->id); in dvmCompilerFilterLoopBlocks()
619 if (!dvmIsBitSet(cUnit->tempBlockV, bb->id)) { in dvmCompilerFilterLoopBlocks()
627 dvmCompilerDataFlowAnalysisDispatcher(cUnit, clearPredecessorVector, in dvmCompilerFilterLoopBlocks()
634 if (dvmIsBitSet(cUnit->tempBlockV, bb->id)) { in dvmCompilerFilterLoopBlocks()
640 if (bb->taken == cUnit->exitBlock) { in dvmCompilerFilterLoopBlocks()
654 if (bb->fallThrough == cUnit->exitBlock) { in dvmCompilerFilterLoopBlocks()
674 bool dvmCompilerLoopOpt(CompilationUnit *cUnit) in dvmCompilerLoopOpt() argument
678 cUnit->loopAnalysis = loopAnalysis; in dvmCompilerLoopOpt()
681 cUnit->isConstantV = dvmAllocBitVector(cUnit->numSSARegs, false); in dvmCompilerLoopOpt()
682 cUnit->constantValues = in dvmCompilerLoopOpt()
683 (int *)dvmCompilerNew(sizeof(int) * cUnit->numSSARegs, in dvmCompilerLoopOpt()
685 dvmCompilerDataFlowAnalysisDispatcher(cUnit, in dvmCompilerLoopOpt()
689 DEBUG_LOOP(dumpConstants(cUnit);) in dvmCompilerLoopOpt()
695 loopAnalysis->isIndVarV = dvmAllocBitVector(cUnit->numSSARegs, false); in dvmCompilerLoopOpt()
696 dvmCompilerDataFlowAnalysisDispatcher(cUnit, in dvmCompilerLoopOpt()
700 DEBUG_LOOP(dumpIVList(cUnit);) in dvmCompilerLoopOpt()
703 if (!isSimpleCountedLoop(cUnit)) in dvmCompilerLoopOpt()
709 loopAnalysis->bodyIsClean = doLoopBodyCodeMotion(cUnit); in dvmCompilerLoopOpt()
710 DEBUG_LOOP(dumpHoistedChecks(cUnit);) in dvmCompilerLoopOpt()
716 genHoistedChecks(cUnit); in dvmCompilerLoopOpt()
723 void dvmCompilerInsertBackwardChaining(CompilationUnit *cUnit) in dvmCompilerInsertBackwardChaining() argument
743 BasicBlock *firstBB = cUnit->entryBlock->fallThrough; in dvmCompilerInsertBackwardChaining()
744 BasicBlock *backBranchBB = findPredecessorBlock(cUnit, firstBB); in dvmCompilerInsertBackwardChaining()
746 backBranchBB->taken = cUnit->backChainBlock; in dvmCompilerInsertBackwardChaining()
749 backBranchBB->fallThrough = cUnit->backChainBlock; in dvmCompilerInsertBackwardChaining()
751 cUnit->backChainBlock->startOffset = firstBB->startOffset; in dvmCompilerInsertBackwardChaining()