Home | History | Annotate | Download | only in x86

Lines Matching full:cunit

39 //JitInstructionSetType dvmCompilerInstructionSet(CompilationUnit *cUnit)
178 void dvmCompilerCodegenDump(CompilationUnit *cUnit) //in ArchUtility.c
191 void dvmCompilerAssembleLIR(CompilationUnit *cUnit, JitTranslationInfo* info)
195 void dvmJitInstallClassObjectPointers(CompilationUnit *cUnit, char *codeAddress)
199 void dvmCompilerMethodMIR2LIR(CompilationUnit *cUnit)
639 static void handleNormalChainingCell(CompilationUnit *cUnit,
643 cUnit->method->name, blockId, offset, stream - streamMethodStart);
651 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
654 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
661 static void handleHotChainingCell(CompilationUnit *cUnit,
665 cUnit->method->name, blockId, offset, stream - streamMethodStart);
673 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
676 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
680 static void handleBackwardBranchChainingCell(CompilationUnit *cUnit,
684 cUnit->method->name, blockId, offset, stream - streamMethodStart);
692 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
695 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
699 static void handleInvokeSingletonChainingCell(CompilationUnit *cUnit,
703 cUnit->method->name, blockId, callee->name, stream - streamMethodStart);
719 static void handleInvokePredictedChainingCell(CompilationUnit *cUnit, int blockId)
760 static void handlePCReconstruction(CompilationUnit *cUnit,
765 (LowOp **) cUnit->pcReconstructionList.elemList;
766 int numElems = cUnit->pcReconstructionList.numUsed;
769 dvmCompilerAppendLIR(cUnit, (LIR *) pcrLabel[i]);
771 loadConstant(cUnit, r0, pcrLabel[i]->operands[0]);
772 genUnconditionalBranch(cUnit, targetLabel);
788 static void genHoistedChecksForCountUpLoop(CompilationUnit *cUnit, MIR *mir)
805 condJumpToBasicBlock(stream, Condition_E, cUnit->exceptionBlockId);
822 condJumpToBasicBlock(stream, Condition_NC, cUnit->exceptionBlockId);
833 static void genHoistedChecksForCountDownLoop(CompilationUnit *cUnit, MIR *mir)
844 condJumpToBasicBlock(stream, Condition_E, cUnit->exceptionBlockId);
853 condJumpToBasicBlock(stream, Condition_NC, cUnit->exceptionBlockId);
864 static void genHoistedLowerBoundCheck(CompilationUnit *cUnit, MIR *mir)
871 condJumpToBasicBlock(stream, Condition_C, cUnit->exceptionBlockId);
876 static void genValidationForPredictedInline(CompilationUnit *cUnit, MIR *mir)
902 void handleExtendedMIR(CompilationUnit *cUnit, MIR *mir)
911 genHoistedChecksForCountUpLoop(cUnit, mir);
915 genHoistedChecksForCountDownLoop(cUnit, mir);
919 genHoistedLowerBoundCheck(cUnit, mir);
927 genValidationForPredictedInline(cUnit, mir);
937 static void setupLoopEntryBlock(CompilationUnit *cUnit, BasicBlock *entry,
946 //cUnit->loopAnalysis->branchToBody = ((LIR*)branchToBody);
953 cUnit->loopAnalysis->branchToPCR = (LIR *) branchToPCR;
965 //cUnit->hasLoop) {
986 static int genTraceProfileEntry(CompilationUnit *cUnit)
988 cUnit->headerSize = 6;
1055 void dvmCompilerMIR2LIR(CompilationUnit *cUnit, JitTranslationInfo *info)
1057 dump_x86_inst = cUnit->printMe;
1060 (LowOpBlockLabel *)dvmCompilerNew(sizeof(LowOpBlockLabel) * cUnit->numBlocks, true); //Utility.c
1073 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerClearVisitedFlag,
1077 dvmGrowableListIteratorInit(&cUnit->blockList, &iterator);
1080 cUnit->profileCodeSize = genTraceProfileEntry(cUnit);
1082 //BasicBlock **blockList = cUnit->blockList;
1083 GrowableList *blockList = &cUnit->blockList;
1099 for (i = 0; i < ((unsigned int) cUnit->numBlocks); i++) {
1102 cUnit->exceptionBlockId = -1;
1106 cUnit->exceptionBlockId = i;
1108 startOfTrace(cUnit->method, labelList, cUnit->exceptionBlockId, cUnit);
1111 if (cUnit->jitMode != kJitLoop)
1141 dvmCompilerAppendLIR(cUnit, (LIR *) &labelList[i]);
1149 setupLoopEntryBlock(cUnit, bb, bb->fallThrough->id);
1161 resetRegisterScoreboard(cUnit);
1207 //assert (i == cUnit->numBlocks - 2);
1209 handlePCReconstruction(cUnit,
1210 &labelList[cUnit->puntBlock->id]);
1215 //if (cUnit->pcReconstructionList.numUsed) {
1235 const DexCode *dexCode = dvmGetMethodCode(cUnit->method);
1241 for (BasicBlock *nextBB = bb; nextBB != NULL; nextBB = cUnit->nextCodegenBlock) {
1244 cUnit->nextCodegenBlock = NULL;
1250 int cg_ret = codeGenBasicBlockJit(cUnit->method, bb);
1254 cUnit->baseAddr = NULL;
1263 handleExtendedMIR(cUnit, mir);
1285 if (singleStepMe || cUnit->allSingleStep) {
1289 notHandled = lowerByteCodeJit(cUnit->method, cUnit->method->insns+mir->offset, mir);
1294 cUnit->baseAddr = NULL;
1314 dvmCompilerApplyLocalOptimizations(cUnit, (LIR *) headLIR,
1315 cUnit->lastLIRInsn);
1335 cUnit->numChainingCells[i] = chainingListByType[i].numUsed;
1338 if (cUnit->numChainingCells[i] == 0)
1342 cUnit->firstChainingLIR[i] = (LIR *) &labelList[blockIdList[0]];
1346 (BasicBlock *) dvmGrowableListGetElement(&cUnit->blockList,
1353 newLIR0(cUnit, ATOM_PSEUDO_ALIGN4);
1356 dvmCompilerAppendLIR(cUnit, (LIR *) &labelList[blockId]);
1361 handleNormalChainingCell(cUnit,
1365 handleInvokeSingletonChainingCell(cUnit,
1369 handleInvokePredictedChainingCell(cUnit, blockId);
1372 handleHotChainingCell(cUnit,
1376 handleBackwardBranchChainingCell(cUnit,
1388 cUnit->baseAddr = NULL;
1396 dvmCompilerApplyGlobalOptimizations(cUnit);
1405 cUnit->baseAddr = NULL;
1416 chainCellCounts.u.count[i] = cUnit->numChainingCells[i];
1422 cUnit->baseAddr = streamMethodStart;
1423 cUnit->totalSize = (stream - streamStart);
1424 if(gDvmJit.codeCacheByteUsed + cUnit->totalSize + CODE_CACHE_PADDING > gDvmJit.codeCacheSize) {
1427 cUnit->baseAddr = NULL;
1440 if (cUnit->printMe) {
1441 unsigned char* codeBaseAddr = (unsigned char *) cUnit->baseAddr;
1444 cUnit->method->clazz->descriptor, cUnit->method->name,
1446 ALOGD("** %s%s@0x%x:", cUnit->method->clazz->descriptor,
1447 cUnit->method->name, cUnit->traceDesc->trace[0].info.frag.startOffset);
1450 ALOGV("JIT CODE after trace %p to %p size %x START %p", cUnit->baseAddr,
1452 cUnit->totalSize, gDvmJit.codeCache);
1456 info->codeAddress = (char*)cUnit->baseAddr;// + cUnit->headerSize;