summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/MethodBitcode.cc
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-09-20 15:50:03 -0700
committer buzbee <buzbee@google.com> 2012-09-20 15:55:26 -0700
commit6ec5e23195479f2dc4c1d84a2594fd67553ce826 (patch)
tree0992b76df7b10d39792089095a520ffa2bf74638 /src/compiler/codegen/MethodBitcode.cc
parent46c6bb2f52cef82660b9be7576b49f83845df93a (diff)
Quick compiler: fix array undershoot
Normal Dalvik vRegs range from 0..n. However, we use negative vReg positions to denote special values such as Method* and other things we might wish to promote. Failed to take this into account for some shadow frame bitcode conversion stuff. Yet another datapoint supporting the upcoming C++ification. Change-Id: I3a1714ac1a80763c048dda3ae95125fc6082202b
Diffstat (limited to 'src/compiler/codegen/MethodBitcode.cc')
-rw-r--r--src/compiler/codegen/MethodBitcode.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index 31fc9cf29e..f4b8461654 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -1796,7 +1796,10 @@ bool methodBlockBitcodeConversion(CompilationUnit* cUnit, BasicBlock* bb)
cUnit->numDalvikRegisters, true,
kAllocMisc);
for (int i = 0; i < cUnit->numSSARegs; i++) {
- canBeRef[SRegToVReg(cUnit, i)] |= cUnit->regLocation[i].ref;
+ int vReg = SRegToVReg(cUnit, i);
+ if (vReg > SSA_METHOD_BASEREG) {
+ canBeRef[SRegToVReg(cUnit, i)] |= cUnit->regLocation[i].ref;
+ }
}
for (int i = 0; i < cUnit->numDalvikRegisters; i++) {
if (canBeRef[i]) {