diff options
author | Bill Buzbee <buzbee@google.com> | 2010-03-16 12:59:32 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-03-16 12:59:32 -0700 |
commit | ac8688e7c548bcd359a9a6ccbfcf5e98dbd97eb3 (patch) | |
tree | 5495740e5dc82cc310fe49e4acbd4828770575f8 /vm/compiler | |
parent | c628e343e0d34fe4c845dc9b3d9771ebcb9bc960 (diff) | |
parent | 900a3afd0e8e0d88426b21447d601ee67e17b642 (diff) | |
download | android_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.c | 10 |
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); |