summaryrefslogtreecommitdiffstats
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorBen Cheng <bccheng@android.com>2011-01-04 15:37:04 -0800
committerBen Cheng <bccheng@android.com>2011-01-04 15:37:04 -0800
commitaf5aa1f4ce7eecc1b47a4c038cebb67d33f08f18 (patch)
tree3ceff6c58f8cdc8f1bcd6cc884215b62386be795 /vm/compiler/codegen/arm/CodegenDriver.c
parenta85893356ac4d86ef7d7dd18807d7bef95d7dddb (diff)
downloadandroid_dalvik-af5aa1f4ce7eecc1b47a4c038cebb67d33f08f18.tar.gz
android_dalvik-af5aa1f4ce7eecc1b47a4c038cebb67d33f08f18.tar.bz2
android_dalvik-af5aa1f4ce7eecc1b47a4c038cebb67d33f08f18.zip
Don't treat dvmJitToPatchPredictedChain as a Jit-to-Interp entry point.
It is just a native callout helper function. Change-Id: I6398b6876f5ba579b76e732107157a4c99337796
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 273cef15a..02c39f6d0 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -1111,7 +1111,7 @@ static void genInvokeSingletonCommon(CompilationUnit *cUnit, MIR *mir,
* 0x426a99b8 : ldr r0, [r7, #44] --> r0 <- this->class->vtable[methodIdx]
* 0x426a99ba : cmp r1, #0 --> compare r1 (rechain count) against 0
* 0x426a99bc : bgt 0x426a99c2 --> >=0? don't rechain
- * 0x426a99be : ldr r7, [r6, #96] --+ dvmJitToPatchPredictedChain
+ * 0x426a99be : ldr r7, [pc, #off]--+ dvmJitToPatchPredictedChain
* 0x426a99c0 : blx r7 --+
* 0x426a99c2 : add r1, pc, #12 --> r1 <- &retChainingCell
* 0x426a99c4 : blx_1 0x426a9098 --+ TEMPLATE_INVOKE_METHOD_NO_OPT
@@ -1182,8 +1182,7 @@ static void genInvokeVirtualCommon(CompilationUnit *cUnit, MIR *mir,
/* Check if rechain limit is reached */
ArmLIR *bypassRechaining = genCmpImmBranch(cUnit, kArmCondGt, r1, 0);
- loadWordDisp(cUnit, rGLUE, offsetof(InterpState,
- jitToInterpEntries.dvmJitToPatchPredictedChain), r7);
+ LOAD_FUNC_ADDR(cUnit, r7, (int) dvmJitToPatchPredictedChain);
genRegCopy(cUnit, r1, rGLUE);
@@ -2929,7 +2928,7 @@ static bool handleFmt35c_3rc(CompilationUnit *cUnit, MIR *mir, BasicBlock *bb,
* 0x47357e6e : mov r1, r8 --> r1 <- &retChainingCell
* 0x47357e70 : cmp r1, #0 --> compare against 0
* 0x47357e72 : bgt 0x47357e7c --> >=0? don't rechain
- * 0x47357e74 : ldr r7, [r6, #108] --+
+ * 0x47357e74 : ldr r7, [pc, #off] --+
* 0x47357e76 : mov r2, r9 | dvmJitToPatchPredictedChain
* 0x47357e78 : mov r3, r10 |
* 0x47357e7a : blx r7 --+
@@ -3071,8 +3070,7 @@ static bool handleFmt35c_3rc(CompilationUnit *cUnit, MIR *mir, BasicBlock *bb,
ArmLIR *bypassRechaining = genCmpImmBranch(cUnit, kArmCondGt,
r1, 0);
- loadWordDisp(cUnit, rGLUE, offsetof(InterpState,
- jitToInterpEntries.dvmJitToPatchPredictedChain), r7);
+ LOAD_FUNC_ADDR(cUnit, r7, (int) dvmJitToPatchPredictedChain);
genRegCopy(cUnit, r1, rGLUE);
genRegCopy(cUnit, r2, r9);