Home | History | Annotate | Download | only in x86

Lines Matching full:cunit

39 //JitInstructionSetType dvmCompilerInstructionSet(CompilationUnit *cUnit)
174 void dvmCompilerCodegenDump(CompilationUnit *cUnit) //in ArchUtility.c
187 void dvmCompilerAssembleLIR(CompilationUnit *cUnit, JitTranslationInfo* info)
191 void dvmJitInstallClassObjectPointers(CompilationUnit *cUnit, char *codeAddress)
195 void dvmCompilerMethodMIR2LIR(CompilationUnit *cUnit)
635 static void handleNormalChainingCell(CompilationUnit *cUnit,
639 cUnit->method->name, blockId, offset, stream - streamMethodStart);
647 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
650 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
657 static void handleHotChainingCell(CompilationUnit *cUnit,
661 cUnit->method->name, blockId, offset, stream - streamMethodStart);
669 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
672 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
676 static void handleBackwardBranchChainingCell(CompilationUnit *cUnit,
680 cUnit->method->name, blockId, offset, stream - streamMethodStart);
688 move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true);
691 //move_imm_to_reg(OpndSize_32, (int) (cUnit->method->insns + offset), P_GPR_1, true); /* used when unchaining */
695 static void handleInvokeSingletonChainingCell(CompilationUnit *cUnit,
699 cUnit->method->name, blockId, callee->name, stream - streamMethodStart);
715 static void handleInvokePredictedChainingCell(CompilationUnit *cUnit, int blockId)
756 static void handlePCReconstruction(CompilationUnit *cUnit,
761 (LowOp **) cUnit->pcReconstructionList.elemList;
762 int numElems = cUnit->pcReconstructionList.numUsed;
765 dvmCompilerAppendLIR(cUnit, (LIR *) pcrLabel[i]);
767 loadConstant(cUnit, r0, pcrLabel[i]->operands[0]);
768 genUnconditionalBranch(cUnit, targetLabel);
784 static void genHoistedChecksForCountUpLoop(CompilationUnit *cUnit, MIR *mir)
801 condJumpToBasicBlock(stream, Condition_E, cUnit->exceptionBlockId);
818 condJumpToBasicBlock(stream, Condition_NC, cUnit->exceptionBlockId);
829 static void genHoistedChecksForCountDownLoop(CompilationUnit *cUnit, MIR *mir)
840 condJumpToBasicBlock(stream, Condition_E, cUnit->exceptionBlockId);
849 condJumpToBasicBlock(stream, Condition_NC, cUnit->exceptionBlockId);
860 static void genHoistedLowerBoundCheck(CompilationUnit *cUnit, MIR *mir)
867 condJumpToBasicBlock(stream, Condition_C, cUnit->exceptionBlockId);
872 static void genValidationForPredictedInline(CompilationUnit *cUnit, MIR *mir)
898 void handleExtendedMIR(CompilationUnit *cUnit, MIR *mir)
907 genHoistedChecksForCountUpLoop(cUnit, mir);
911 genHoistedChecksForCountDownLoop(cUnit, mir);
915 genHoistedLowerBoundCheck(cUnit, mir);
923 genValidationForPredictedInline(cUnit, mir);
933 static void setupLoopEntryBlock(CompilationUnit *cUnit, BasicBlock *entry,
942 //cUnit->loopAnalysis->branchToBody = ((LIR*)branchToBody);
949 cUnit->loopAnalysis->branchToPCR = (LIR *) branchToPCR;
961 //cUnit->hasLoop) {
982 static int genTraceProfileEntry(CompilationUnit *cUnit)
984 cUnit->headerSize = 6;
1051 void dvmCompilerMIR2LIR(CompilationUnit *cUnit, JitTranslationInfo *info)
1053 dump_x86_inst = cUnit->printMe;
1056 (LowOpBlockLabel *)dvmCompilerNew(sizeof(LowOpBlockLabel) * cUnit->numBlocks, true); //Utility.c
1069 dvmCompilerDataFlowAnalysisDispatcher(cUnit, dvmCompilerClearVisitedFlag,
1073 dvmGrowableListIteratorInit(&cUnit->blockList, &iterator);
1076 cUnit->profileCodeSize = genTraceProfileEntry(cUnit);
1078 //BasicBlock **blockList = cUnit->blockList;
1079 GrowableList *blockList = &cUnit->blockList;
1095 for (i = 0; i < ((unsigned int) cUnit->numBlocks); i++) {
1098 cUnit->exceptionBlockId = -1;
1102 cUnit->exceptionBlockId = i;
1104 startOfTrace(cUnit->method, labelList, cUnit->exceptionBlockId, cUnit);
1107 if (cUnit->jitMode != kJitLoop)
1137 dvmCompilerAppendLIR(cUnit, (LIR *) &labelList[i]);
1145 setupLoopEntryBlock(cUnit, bb, bb->fallThrough->id);
1157 resetRegisterScoreboard(cUnit);
1203 //assert (i == cUnit->numBlocks - 2);
1205 handlePCReconstruction(cUnit,
1206 &labelList[cUnit->puntBlock->id]);
1211 //if (cUnit->pcReconstructionList.numUsed) {
1231 const DexCode *dexCode = dvmGetMethodCode(cUnit->method);
1237 for (BasicBlock *nextBB = bb; nextBB != NULL; nextBB = cUnit->nextCodegenBlock) {
1240 cUnit->nextCodegenBlock = NULL;
1246 int cg_ret = codeGenBasicBlockJit(cUnit->method, bb);
1250 cUnit->baseAddr = NULL;
1259 handleExtendedMIR(cUnit, mir);
1281 if (singleStepMe || cUnit->allSingleStep) {
1285 notHandled = lowerByteCodeJit(cUnit->method, cUnit->method->insns+mir->offset, mir);
1290 cUnit->baseAddr = NULL;
1310 dvmCompilerApplyLocalOptimizations(cUnit, (LIR *) headLIR,
1311 cUnit->lastLIRInsn);
1331 cUnit->numChainingCells[i] = chainingListByType[i].numUsed;
1334 if (cUnit->numChainingCells[i] == 0)
1338 cUnit->firstChainingLIR[i] = (LIR *) &labelList[blockIdList[0]];
1342 (BasicBlock *) dvmGrowableListGetElement(&cUnit->blockList,
1349 newLIR0(cUnit, ATOM_PSEUDO_ALIGN4);
1352 dvmCompilerAppendLIR(cUnit, (LIR *) &labelList[blockId]);
1357 handleNormalChainingCell(cUnit,
1361 handleInvokeSingletonChainingCell(cUnit,
1365 handleInvokePredictedChainingCell(cUnit, blockId);
1368 handleHotChainingCell(cUnit,
1372 handleBackwardBranchChainingCell(cUnit,
1384 cUnit->baseAddr = NULL;
1392 dvmCompilerApplyGlobalOptimizations(cUnit);
1401 cUnit->baseAddr = NULL;
1412 chainCellCounts.u.count[i] = cUnit->numChainingCells[i];
1418 cUnit->baseAddr = streamMethodStart;
1419 cUnit->totalSize = (stream - streamStart);
1420 if(gDvmJit.codeCacheByteUsed + cUnit->totalSize + CODE_CACHE_PADDING > gDvmJit.codeCacheSize) {
1423 cUnit->baseAddr = NULL;
1436 if (cUnit->printMe) {
1437 unsigned char* codeBaseAddr = (unsigned char *) cUnit->baseAddr;
1440 cUnit->method->clazz->descriptor, cUnit->method->name,
1442 ALOGD("** %s%s@0x%x:", cUnit->method->clazz->descriptor,
1443 cUnit->method->name, cUnit->traceDesc->trace[0].info.frag.startOffset);
1446 ALOGV("JIT CODE after trace %p to %p size %x START %p", cUnit->baseAddr,
1448 cUnit->totalSize, gDvmJit.codeCache);
1452 info->codeAddress = (char*)cUnit->baseAddr;// + cUnit->headerSize;