Home
last modified time | relevance | path

Searched refs:cUnit (Results 1 – 25 of 46) sorted by relevance

12

/dalvik/vm/compiler/codegen/arm/armv7-a-neon/
DMethodCodegenDriver.cpp38 static void genMethodInflateAndPunt(CompilationUnit *cUnit, MIR *mir, in genMethodInflateAndPunt() argument
56 dvmCompilerFlushAllRegs(cUnit); in genMethodInflateAndPunt()
59 opRegRegImm(cUnit, kOpAdd, oldStackSave, r5FP, in genMethodInflateAndPunt()
60 cUnit->method->registersSize * 4); in genMethodInflateAndPunt()
62 opRegRegImm(cUnit, kOpAdd, oldFP, oldStackSave, sizeof(StackSaveArea)); in genMethodInflateAndPunt()
64 opRegRegImm(cUnit, kOpSub, newStackSave, r5FP, sizeof(StackSaveArea)); in genMethodInflateAndPunt()
66 loadWordDisp(cUnit, r13sp, 0, savedPC); in genMethodInflateAndPunt()
67 loadConstant(cUnit, currentPC, (int) (cUnit->method->insns + mir->offset)); in genMethodInflateAndPunt()
68 loadConstant(cUnit, method, (int) cUnit->method); in genMethodInflateAndPunt()
69 loadConstant(cUnit, pDvmDex, (int) cUnit->method->clazz->pDvmDex); in genMethodInflateAndPunt()
[all …]
/dalvik/vm/compiler/codegen/arm/
DArmRallocUtil.cpp52 extern void dvmCompilerClobberCallRegs(CompilationUnit *cUnit) in dvmCompilerClobberCallRegs() argument
54 dvmCompilerClobber(cUnit, r0); in dvmCompilerClobberCallRegs()
55 dvmCompilerClobber(cUnit, r1); in dvmCompilerClobberCallRegs()
56 dvmCompilerClobber(cUnit, r2); in dvmCompilerClobberCallRegs()
57 dvmCompilerClobber(cUnit, r3); in dvmCompilerClobberCallRegs()
58 dvmCompilerClobber(cUnit, r9); // Need to do this?, be conservative in dvmCompilerClobberCallRegs()
59 dvmCompilerClobber(cUnit, r11); in dvmCompilerClobberCallRegs()
60 dvmCompilerClobber(cUnit, r12); in dvmCompilerClobberCallRegs()
61 dvmCompilerClobber(cUnit, r14lr); in dvmCompilerClobberCallRegs()
65 extern void dvmCompilerClobberHandlerRegs(CompilationUnit *cUnit) in dvmCompilerClobberHandlerRegs() argument
[all …]
DCodegenDriver.cpp30 static void markCard(CompilationUnit *cUnit, int valReg, int tgtAddrReg) in markCard() argument
32 int regCardBase = dvmCompilerAllocTemp(cUnit); in markCard()
33 int regCardNo = dvmCompilerAllocTemp(cUnit); in markCard()
34 ArmLIR *branchOver = genCmpImmBranch(cUnit, kArmCondEq, valReg, 0); in markCard()
35 loadWordDisp(cUnit, r6SELF, offsetof(Thread, cardTable), in markCard()
37 opRegRegImm(cUnit, kOpLsr, regCardNo, tgtAddrReg, GC_CARD_SHIFT); in markCard()
38 storeBaseIndexed(cUnit, regCardBase, regCardNo, regCardBase, 0, in markCard()
40 ArmLIR *target = newLIR0(cUnit, kArmPseudoTargetLabel); in markCard()
43 dvmCompilerFreeTemp(cUnit, regCardBase); in markCard()
44 dvmCompilerFreeTemp(cUnit, regCardNo); in markCard()
[all …]
DArchFactory.cpp29 static TGT_LIR *genRegImmCheck(CompilationUnit *cUnit, in genRegImmCheck() argument
34 TGT_LIR *branch = genCmpImmBranch(cUnit, cond, reg, checkValue); in genRegImmCheck()
35 if (cUnit->jitMode == kJitMethod) { in genRegImmCheck()
36 BasicBlock *bb = cUnit->curBlock; in genRegImmCheck()
38 ArmLIR *exceptionLabel = (ArmLIR *) cUnit->blockLabelList; in genRegImmCheck()
48 return genCheckCommon(cUnit, dOffset, branch, pcrLabel); in genRegImmCheck()
57 static TGT_LIR *genNullCheck(CompilationUnit *cUnit, int sReg, int mReg, in genNullCheck() argument
61 if (dvmIsBitSet(cUnit->regPool->nullCheckedRegs, sReg)) { in genNullCheck()
64 dvmSetBit(cUnit->regPool->nullCheckedRegs, sReg); in genNullCheck()
65 return genRegImmCheck(cUnit, kArmCondEq, mReg, 0, dOffset, pcrLabel); in genNullCheck()
[all …]
DCodegen.h32 static ArmLIR *opRegImm(CompilationUnit *cUnit, OpKind op, int rDestSrc1,
34 static ArmLIR *opRegReg(CompilationUnit *cUnit, OpKind op, int rDestSrc1,
38 static bool genArithOpFloatPortable(CompilationUnit *cUnit, MIR *mir,
42 static bool genArithOpDoublePortable(CompilationUnit *cUnit, MIR *mir,
46 static bool genConversionPortable(CompilationUnit *cUnit, MIR *mir);
49 static void genMonitorPortable(CompilationUnit *cUnit, MIR *mir);
52 static void genInterpSingleStep(CompilationUnit *cUnit, MIR *mir);
64 extern ArmLIR* dvmCompilerRegCopyNoInsert(CompilationUnit *cUnit, int rDest,
DGlobalOptimizations.cpp25 static void applyRedundantBranchElimination(CompilationUnit *cUnit) in applyRedundantBranchElimination() argument
29 for (thisLIR = (ArmLIR *) cUnit->firstLIRInsn; in applyRedundantBranchElimination()
30 thisLIR != (ArmLIR *) cUnit->lastLIRInsn; in applyRedundantBranchElimination()
55 (nextLIR = (ArmLIR *) cUnit->lastLIRInsn)) in applyRedundantBranchElimination()
62 void dvmCompilerApplyGlobalOptimizations(CompilationUnit *cUnit) in dvmCompilerApplyGlobalOptimizations() argument
64 applyRedundantBranchElimination(cUnit); in dvmCompilerApplyGlobalOptimizations()
/dalvik/vm/compiler/codegen/arm/Thumb2/
DGen.cpp47 static int genTraceProfileEntry(CompilationUnit *cUnit) in genTraceProfileEntry() argument
51 newLIR1(cUnit, kArm16BitData, addr & 0xffff); in genTraceProfileEntry()
52 newLIR1(cUnit, kArm16BitData, (addr >> 16) & 0xffff); in genTraceProfileEntry()
53 cUnit->chainCellOffsetLIR = in genTraceProfileEntry()
54 (LIR *) newLIR1(cUnit, kArm16BitData, CHAIN_CELL_OFFSET_TAG); in genTraceProfileEntry()
55 cUnit->headerSize = 6; in genTraceProfileEntry()
59 newLIR2(cUnit, kThumb2LdrPcReln12, r0, 8); in genTraceProfileEntry()
60 newLIR3(cUnit, kThumbLdrRRI5, r1, r0, 0); in genTraceProfileEntry()
61 newLIR2(cUnit, kThumbAddRI8, r1, 1); in genTraceProfileEntry()
62 newLIR3(cUnit, kThumbStrRRI5, r1, r0, 0); in genTraceProfileEntry()
[all …]
DFactory.cpp51 static ArmLIR *loadFPConstantValue(CompilationUnit *cUnit, int rDest, in loadFPConstantValue() argument
57 return newLIR2(cUnit, kThumb2Vmovs_IMM8, rDest, encodedImm); in loadFPConstantValue()
59 ArmLIR *dataTarget = scanLiteralPool(cUnit->literalList, value, 0); in loadFPConstantValue()
61 dataTarget = addWordData(cUnit, &cUnit->literalList, value); in loadFPConstantValue()
71 dvmCompilerAppendLIR(cUnit, (LIR *) loadPcRel); in loadFPConstantValue()
136 static ArmLIR *loadConstantNoClobber(CompilationUnit *cUnit, int rDest, in loadConstantNoClobber() argument
143 return loadFPConstantValue(cUnit, rDest, value); in loadConstantNoClobber()
148 return newLIR2(cUnit, kThumbMovImm, rDest, value); in loadConstantNoClobber()
153 res = newLIR2(cUnit, kThumb2MovImmShift, rDest, modImm); in loadConstantNoClobber()
158 res = newLIR2(cUnit, kThumb2MvnImmShift, rDest, modImm); in loadConstantNoClobber()
[all …]
DRalloc.cpp32 int dvmCompilerAllocTypedTempPair(CompilationUnit *cUnit, in dvmCompilerAllocTypedTempPair() argument
44 lowReg = dvmCompilerAllocTempDouble(cUnit); in dvmCompilerAllocTypedTempPair()
47 lowReg = dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTempPair()
48 highReg = dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTempPair()
54 int dvmCompilerAllocTypedTemp(CompilationUnit *cUnit, bool fpHint, in dvmCompilerAllocTypedTemp() argument
61 return dvmCompilerAllocTempFloat(cUnit); in dvmCompilerAllocTypedTemp()
62 return dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTemp()
/dalvik/vm/compiler/codegen/
DRalloc.h40 static inline int dvmCompilerS2VReg(CompilationUnit *cUnit, int sReg) in dvmCompilerS2VReg() argument
43 return DECODE_REG(dvmConvertSSARegToDalvik(cUnit, sReg)); in dvmCompilerS2VReg()
47 static inline void dvmCompilerResetNullCheck(CompilationUnit *cUnit) in dvmCompilerResetNullCheck() argument
49 dvmClearAllBits(cUnit->regPool->nullCheckedRegs); in dvmCompilerResetNullCheck()
67 static inline bool dvmCompilerLiveOut(CompilationUnit *cUnit, int sReg) in dvmCompilerLiveOut() argument
79 extern RegLocation dvmCompilerEvalLoc(CompilationUnit *cUnit, RegLocation loc,
82 extern void dvmCompilerClobber(CompilationUnit *cUnit, int reg);
84 extern RegLocation dvmCompilerUpdateLoc(CompilationUnit *cUnit,
88 extern RegLocation dvmCompilerUpdateLocWide(CompilationUnit *cUnit,
92 extern void dvmCompilerClobberHandlerRegs(CompilationUnit *cUnit);
[all …]
DCodegenFactory.cpp35 static TGT_LIR *loadWordDisp(CompilationUnit *cUnit, int rBase, in loadWordDisp() argument
38 return loadBaseDisp(cUnit, NULL, rBase, displacement, rDest, kWord, in loadWordDisp()
42 static TGT_LIR *storeWordDisp(CompilationUnit *cUnit, int rBase, in storeWordDisp() argument
45 return storeBaseDisp(cUnit, rBase, displacement, rSrc, kWord); in storeWordDisp()
53 static void loadValueDirect(CompilationUnit *cUnit, RegLocation rlSrc, in loadValueDirect() argument
56 rlSrc = dvmCompilerUpdateLoc(cUnit, rlSrc); in loadValueDirect()
58 genRegCopy(cUnit, reg1, rlSrc.lowReg); in loadValueDirect()
60 loadWordDisp(cUnit, rSELF, offsetof(Thread, interpSave.retval), reg1); in loadValueDirect()
63 loadWordDisp(cUnit, rFP, dvmCompilerS2VReg(cUnit, rlSrc.sRegLow) << 2, in loadValueDirect()
73 static void loadValueDirectFixed(CompilationUnit *cUnit, RegLocation rlSrc, in loadValueDirectFixed() argument
[all …]
DRallocUtil.cpp46 extern void dvmCompilerResetRegPool(CompilationUnit *cUnit) in dvmCompilerResetRegPool() argument
49 for (i=0; i < cUnit->regPool->numCoreTemps; i++) { in dvmCompilerResetRegPool()
50 cUnit->regPool->coreTemps[i].inUse = false; in dvmCompilerResetRegPool()
52 for (i=0; i < cUnit->regPool->numFPTemps; i++) { in dvmCompilerResetRegPool()
53 cUnit->regPool->FPTemps[i].inUse = false; in dvmCompilerResetRegPool()
83 static RegisterInfo *getRegInfo(CompilationUnit *cUnit, int reg) in getRegInfo() argument
85 int numTemps = cUnit->regPool->numCoreTemps; in getRegInfo()
86 RegisterInfo *p = cUnit->regPool->coreTemps; in getRegInfo()
93 p = cUnit->regPool->FPTemps; in getRegInfo()
94 numTemps = cUnit->regPool->numFPTemps; in getRegInfo()
[all …]
DCompilerCodegen.h29 void dvmCompilerMIR2LIR(CompilationUnit *cUnit);
32 void dvmCompilerMethodMIR2LIR(CompilationUnit *cUnit);
35 void dvmCompilerAssembleLIR(CompilationUnit *cUnit, JitTranslationInfo *info);
41 void dvmJitInstallClassObjectPointers(CompilationUnit *cUnit,
48 void dvmCompilerCodegenDump(CompilationUnit *cUnit);
54 void dvmCompilerLocalRegAlloc(CompilationUnit *cUnit);
57 void dvmCompilerInitializeRegAlloc(CompilationUnit *cUnit);
72 void dvmCompilerGenMemBarrier(CompilationUnit *cUnit, int barrierKind);
/dalvik/vm/compiler/codegen/arm/Thumb/
DGen.cpp50 static int genTraceProfileEntry(CompilationUnit *cUnit) in genTraceProfileEntry() argument
54 newLIR1(cUnit, kArm16BitData, addr & 0xffff); in genTraceProfileEntry()
55 newLIR1(cUnit, kArm16BitData, (addr >> 16) & 0xffff); in genTraceProfileEntry()
56 cUnit->chainCellOffsetLIR = in genTraceProfileEntry()
57 (LIR *) newLIR1(cUnit, kArm16BitData, CHAIN_CELL_OFFSET_TAG); in genTraceProfileEntry()
58 cUnit->headerSize = 6; in genTraceProfileEntry()
62 newLIR2(cUnit, kThumbMovRR_H2L, r0, r15pc); in genTraceProfileEntry()
63 newLIR2(cUnit, kThumbSubRI8, r0, 10); in genTraceProfileEntry()
64 newLIR3(cUnit, kThumbLdrRRI5, r0, r0, 0); in genTraceProfileEntry()
65 newLIR3(cUnit, kThumbLdrRRI5, r1, r0, 0); in genTraceProfileEntry()
[all …]
DFactory.cpp27 static void storePair(CompilationUnit *cUnit, int base, int lowReg,
29 static void loadPair(CompilationUnit *cUnit, int base, int lowReg, int highReg);
30 static ArmLIR *loadWordDisp(CompilationUnit *cUnit, int rBase, int displacement,
32 static ArmLIR *storeWordDisp(CompilationUnit *cUnit, int rBase,
34 static ArmLIR *genRegRegCheck(CompilationUnit *cUnit,
49 static ArmLIR *loadConstantNoClobber(CompilationUnit *cUnit, int rDest, in loadConstantNoClobber() argument
53 int tDest = LOWREG(rDest) ? rDest : dvmCompilerAllocTemp(cUnit); in loadConstantNoClobber()
56 res = newLIR2(cUnit, kThumbMovImm, tDest, value); in loadConstantNoClobber()
58 opRegReg(cUnit, kOpMov, rDest, tDest); in loadConstantNoClobber()
59 dvmCompilerFreeTemp(cUnit, tDest); in loadConstantNoClobber()
[all …]
DRalloc.cpp29 int dvmCompilerAllocTypedTempPair(CompilationUnit *cUnit, bool fpHint, in dvmCompilerAllocTypedTempPair() argument
35 lowReg = dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTempPair()
36 highReg = dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTempPair()
41 int dvmCompilerAllocTypedTemp(CompilationUnit *cUnit, bool fpHint, int regClass) in dvmCompilerAllocTypedTemp() argument
43 return dvmCompilerAllocTemp(cUnit); in dvmCompilerAllocTypedTemp()
/dalvik/vm/compiler/codegen/arm/FP/
DThumbPortableFP.cpp18 static bool genArithOpFloatPortable(CompilationUnit *cUnit, MIR *mir,
22 static bool genArithOpDoublePortable(CompilationUnit *cUnit, MIR *mir,
26 static bool genConversionPortable(CompilationUnit *cUnit, MIR *mir);
28 static bool handleExecuteInlineC(CompilationUnit *cUnit, MIR *mir);
30 static bool genConversion(CompilationUnit *cUnit, MIR *mir) in genConversion() argument
32 return genConversionPortable(cUnit, mir); in genConversion()
35 static bool genArithOpFloat(CompilationUnit *cUnit, MIR *mir, in genArithOpFloat() argument
39 return genArithOpFloatPortable(cUnit, mir, rlDest, rlSrc1, rlSrc2); in genArithOpFloat()
42 static bool genArithOpDouble(CompilationUnit *cUnit, MIR *mir, in genArithOpDouble() argument
46 return genArithOpDoublePortable(cUnit, mir, rlDest, rlSrc1, rlSrc2); in genArithOpDouble()
[all …]
DThumbVFP.cpp27 static void loadValueAddressDirect(CompilationUnit *cUnit, RegLocation rlSrc, in loadValueAddressDirect() argument
30 rlSrc = rlSrc.wide ? dvmCompilerUpdateLocWide(cUnit, rlSrc) : in loadValueAddressDirect()
31 dvmCompilerUpdateLoc(cUnit, rlSrc); in loadValueAddressDirect()
34 dvmCompilerFlushRegWide(cUnit, rlSrc.lowReg, rlSrc.highReg); in loadValueAddressDirect()
36 dvmCompilerFlushReg(cUnit, rlSrc.lowReg); in loadValueAddressDirect()
39 dvmCompilerClobber(cUnit, rDest); in loadValueAddressDirect()
40 dvmCompilerLockTemp(cUnit, rDest); in loadValueAddressDirect()
41 opRegRegImm(cUnit, kOpAdd, rDest, r5FP, in loadValueAddressDirect()
42 dvmCompilerS2VReg(cUnit, rlSrc.sRegLow) << 2); in loadValueAddressDirect()
45 static bool genInlineSqrt(CompilationUnit *cUnit, MIR *mir) in genInlineSqrt() argument
[all …]
DThumb2VFP.cpp17 static bool genArithOpFloat(CompilationUnit *cUnit, MIR *mir, in genArithOpFloat() argument
48 return genArithOpFloatPortable(cUnit, mir, rlDest, rlSrc1, in genArithOpFloat()
54 rlSrc1 = loadValue(cUnit, rlSrc1, kFPReg); in genArithOpFloat()
55 rlSrc2 = loadValue(cUnit, rlSrc2, kFPReg); in genArithOpFloat()
56 rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kFPReg, true); in genArithOpFloat()
57 newLIR3(cUnit, (ArmOpcode)op, rlResult.lowReg, rlSrc1.lowReg, in genArithOpFloat()
59 storeValue(cUnit, rlDest, rlResult); in genArithOpFloat()
63 static bool genArithOpDouble(CompilationUnit *cUnit, MIR *mir, in genArithOpDouble() argument
90 return genArithOpDoublePortable(cUnit, mir, rlDest, rlSrc1, in genArithOpDouble()
97 rlSrc1 = loadValueWide(cUnit, rlSrc1, kFPReg); in genArithOpDouble()
[all …]
/dalvik/vm/compiler/
DSSATransformation.cpp23 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()
[all …]
DLoop.cpp26 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);
[all …]
DFrontend.cpp537 static BasicBlock *splitBlock(CompilationUnit *cUnit, in splitBlock() argument
551 cUnit->numBlocks++); in splitBlock()
552 dvmInsertGrowableList(&cUnit->blockList, (intptr_t) bottomBlock); in splitBlock()
608 static BasicBlock *findBlock(CompilationUnit *cUnit, in findBlock() argument
612 GrowableList *blockList = &cUnit->blockList; in findBlock()
624 BasicBlock *newBB = splitBlock(cUnit, codeOffset, bb); in findBlock()
629 bb = dvmCompilerNewBB(kDalvikByteCode, cUnit->numBlocks++); in findBlock()
630 dvmInsertGrowableList(&cUnit->blockList, (intptr_t) bb); in findBlock()
638 void dvmDumpCFG(CompilationUnit *cUnit, const char *dirPrefix) in dvmDumpCFG() argument
640 const Method *method = cUnit->method; in dvmDumpCFG()
[all …]
DRalloc.cpp27 static void inferTypes(CompilationUnit *cUnit, BasicBlock *bb) in inferTypes() argument
39 cUnit->regLocation[ssaRep->uses[i]].fp = true; in inferTypes()
43 cUnit->regLocation[ssaRep->defs[i]].fp = true; in inferTypes()
57 void dvmCompilerLocalRegAlloc(CompilationUnit *cUnit) in dvmCompilerLocalRegAlloc() argument
63 loc = (RegLocation*)dvmCompilerNew(cUnit->numSSARegs * sizeof(*loc), true); in dvmCompilerLocalRegAlloc()
64 for (i=0; i< cUnit->numSSARegs; i++) { in dvmCompilerLocalRegAlloc()
68 cUnit->regLocation = loc; in dvmCompilerLocalRegAlloc()
72 dvmGrowableListIteratorInit(&cUnit->blockList, &iterator); in dvmCompilerLocalRegAlloc()
77 inferTypes(cUnit, bb); in dvmCompilerLocalRegAlloc()
81 for (i=0; i < cUnit->numSSARegs; i++) { in dvmCompilerLocalRegAlloc()
[all …]
DCompiler.h207 void dvmCompilerInlineMIR(struct CompilationUnit *cUnit,
209 void dvmInitializeSSAConversion(struct CompilationUnit *cUnit);
210 int dvmConvertSSARegToDalvik(const struct CompilationUnit *cUnit, int ssaReg);
211 bool dvmCompilerLoopOpt(struct CompilationUnit *cUnit);
212 void dvmCompilerInsertBackwardChaining(struct CompilationUnit *cUnit);
213 void dvmCompilerNonLoopAnalysis(struct CompilationUnit *cUnit);
214 bool dvmCompilerFindLocalLiveIn(struct CompilationUnit *cUnit,
216 bool dvmCompilerDoSSAConversion(struct CompilationUnit *cUnit,
218 bool dvmCompilerDoConstantPropagation(struct CompilationUnit *cUnit,
220 bool dvmCompilerFindInductionVariables(struct CompilationUnit *cUnit,
[all …]
/dalvik/vm/compiler/codegen/x86/
DCodegenDriver.cpp27 extern X86LIR *loadConstant(CompilationUnit *cUnit, int rDest, int value);
28 extern X86LIR *loadWordDisp(CompilationUnit *cUnit, int rBase,
30 extern void dvmCompilerFlushAllRegs(CompilationUnit *cUnit);
31 extern void storeWordDisp(CompilationUnit *cUnit, int rBase,
33 extern X86LIR *opReg(CompilationUnit *cUnit, OpKind op, int rDestSrc);
43 static void genPuntToInterp(CompilationUnit *cUnit, unsigned int offset)
45 dvmCompilerFlushAllRegs(cUnit);
46 loadConstant(cUnit, rPC, (int)(cUnit->method->insns + offset));
47 loadWordDisp(cUnit, rEBP, 0, rECX); // Get glue
48 loadWordDisp(cUnit, rECX,
[all …]

12