diff options
Diffstat (limited to 'vm/compiler/InlineTransformation.c')
-rw-r--r-- | vm/compiler/InlineTransformation.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/vm/compiler/InlineTransformation.c b/vm/compiler/InlineTransformation.c index 0b1330f16..2cdba18cd 100644 --- a/vm/compiler/InlineTransformation.c +++ b/vm/compiler/InlineTransformation.c @@ -43,7 +43,7 @@ static void inlineGetter(CompilationUnit *cUnit, { BasicBlock *moveResultBB = invokeBB->fallThrough; MIR *moveResultMIR = moveResultBB->firstMIRInsn; - MIR *newGetterMIR = dvmCompilerNew(sizeof(MIR), true); + MIR *newGetterMIR = (MIR *)dvmCompilerNew(sizeof(MIR), true); DecodedInstruction getterInsn; dexDecodeInstruction(calleeMethod->insns, &getterInsn); @@ -100,7 +100,7 @@ static void inlineGetter(CompilationUnit *cUnit, dvmCompilerInsertMIRAfter(invokeBB, invokeMIR, newGetterMIR); if (isPredicted) { - MIR *invokeMIRSlow = dvmCompilerNew(sizeof(MIR), true); + MIR *invokeMIRSlow = (MIR *)dvmCompilerNew(sizeof(MIR), true); *invokeMIRSlow = *invokeMIR; invokeMIR->dalvikInsn.opcode = kMirOpCheckInlinePrediction; @@ -134,7 +134,7 @@ static void inlineSetter(CompilationUnit *cUnit, bool isPredicted, bool isRange) { - MIR *newSetterMIR = dvmCompilerNew(sizeof(MIR), true); + MIR *newSetterMIR = (MIR *)dvmCompilerNew(sizeof(MIR), true); DecodedInstruction setterInsn; dexDecodeInstruction(calleeMethod->insns, &setterInsn); @@ -179,7 +179,7 @@ static void inlineSetter(CompilationUnit *cUnit, dvmCompilerInsertMIRAfter(invokeBB, invokeMIR, newSetterMIR); if (isPredicted) { - MIR *invokeMIRSlow = dvmCompilerNew(sizeof(MIR), true); + MIR *invokeMIRSlow = (MIR *)dvmCompilerNew(sizeof(MIR), true); *invokeMIRSlow = *invokeMIR; invokeMIR->dalvikInsn.opcode = kMirOpCheckInlinePrediction; @@ -246,7 +246,7 @@ static void inlineEmptyVirtualCallee(CompilationUnit *cUnit, MIR *invokeMIR, BasicBlock *invokeBB) { - MIR *invokeMIRSlow = dvmCompilerNew(sizeof(MIR), true); + MIR *invokeMIRSlow = (MIR *)dvmCompilerNew(sizeof(MIR), true); *invokeMIRSlow = *invokeMIR; invokeMIR->dalvikInsn.opcode = kMirOpCheckInlinePrediction; @@ -284,14 +284,16 @@ static void tryInlineVirtualCallsite(CompilationUnit *cUnit, void dvmCompilerInlineMIR(CompilationUnit *cUnit) { - int i; bool isRange = false; + GrowableListIterator iterator; + dvmGrowableListIteratorInit(&cUnit->blockList, &iterator); /* * Analyze the basic block containing an invoke to see if it can be inlined */ - for (i = 0; i < cUnit->numBlocks; i++) { - BasicBlock *bb = cUnit->blockList[i]; + while (true) { + BasicBlock *bb = (BasicBlock *) dvmGrowableListIteratorNext(&iterator); + if (bb == NULL) break; if (bb->blockType != kDalvikByteCode) continue; MIR *lastMIRInsn = bb->lastMIRInsn; |