summaryrefslogtreecommitdiffstats
path: root/vm/compiler
diff options
context:
space:
mode:
authorBill Buzbee <buzbee@google.com>2010-03-16 12:59:32 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-03-16 12:59:32 -0700
commitac8688e7c548bcd359a9a6ccbfcf5e98dbd97eb3 (patch)
tree5495740e5dc82cc310fe49e4acbd4828770575f8 /vm/compiler
parentc628e343e0d34fe4c845dc9b3d9771ebcb9bc960 (diff)
parent900a3afd0e8e0d88426b21447d601ee67e17b642 (diff)
downloadandroid_dalvik-ac8688e7c548bcd359a9a6ccbfcf5e98dbd97eb3.tar.gz
android_dalvik-ac8688e7c548bcd359a9a6ccbfcf5e98dbd97eb3.tar.bz2
android_dalvik-ac8688e7c548bcd359a9a6ccbfcf5e98dbd97eb3.zip
am 900a3afd: Jit: Fix register usage bug - Issue 2518825 native crash running ARMv5te JIT
Merge commit '900a3afd0e8e0d88426b21447d601ee67e17b642' into dalvik-dev * commit '900a3afd0e8e0d88426b21447d601ee67e17b642': Jit: Fix register usage bug - Issue 2518825 native crash running ARMv5te JIT
Diffstat (limited to 'vm/compiler')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 1e0a1d892..33a8fb58e 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -565,6 +565,16 @@ static void genArrayObjectPut(CompilationUnit *cUnit, MIR *mir,
loadWordDisp(cUnit, r0, offsetof(Object, clazz), r0);
opReg(cUnit, kOpBlx, r2);
dvmCompilerClobberCallRegs(cUnit);
+
+ /*
+ * Using fixed registers here, and counting on r4 and r7 being
+ * preserved across the above call. Tell the register allocation
+ * utilities about the regs we are using directly
+ */
+ dvmCompilerLockTemp(cUnit, regPtr); // r4PC
+ dvmCompilerLockTemp(cUnit, regIndex); // r7
+ dvmCompilerLockTemp(cUnit, r0);
+
/* Bad? - roll back and re-execute if so */
genRegImmCheck(cUnit, kArmCondEq, r0, 0, mir->offset, pcrLabel);