summaryrefslogtreecommitdiffstats
path: root/vm/compiler/codegen
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2011-05-25 16:00:22 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-05-25 16:00:22 -0700
commite1c94cd59e250f69b973e369db316808a7e7cf77 (patch)
tree947bc5735de5ad6b3529617d1f2f561996f0d5a5 /vm/compiler/codegen
parent43e796a261bec308b44e9e5a627820845812202c (diff)
parentcf4a20cf0cbc53f03a5b16c7152bbb29907f7108 (diff)
downloadandroid_dalvik-e1c94cd59e250f69b973e369db316808a7e7cf77.tar.gz
android_dalvik-e1c94cd59e250f69b973e369db316808a7e7cf77.tar.bz2
android_dalvik-e1c94cd59e250f69b973e369db316808a7e7cf77.zip
am cf4a20cf: Interpreter/Debugger fix #4479968
* commit 'cf4a20cf0cbc53f03a5b16c7152bbb29907f7108': Interpreter/Debugger fix #4479968
Diffstat (limited to 'vm/compiler/codegen')
-rw-r--r--vm/compiler/codegen/CodegenFactory.cpp15
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.cpp2
-rw-r--r--vm/compiler/codegen/arm/Thumb/Gen.cpp6
3 files changed, 13 insertions, 10 deletions
diff --git a/vm/compiler/codegen/CodegenFactory.cpp b/vm/compiler/codegen/CodegenFactory.cpp
index 61e29d7d1..f42ae746b 100644
--- a/vm/compiler/codegen/CodegenFactory.cpp
+++ b/vm/compiler/codegen/CodegenFactory.cpp
@@ -57,7 +57,7 @@ static void loadValueDirect(CompilationUnit *cUnit, RegLocation rlSrc,
if (rlSrc.location == kLocPhysReg) {
genRegCopy(cUnit, reg1, rlSrc.lowReg);
} else if (rlSrc.location == kLocRetval) {
- loadWordDisp(cUnit, rSELF, offsetof(Thread, retval), reg1);
+ loadWordDisp(cUnit, rSELF, offsetof(Thread, interpSave.retval), reg1);
} else {
assert(rlSrc.location == kLocDalvikFrame);
loadWordDisp(cUnit, rFP, dvmCompilerS2VReg(cUnit, rlSrc.sRegLow) << 2,
@@ -90,7 +90,8 @@ static void loadValueDirectWide(CompilationUnit *cUnit, RegLocation rlSrc,
if (rlSrc.location == kLocPhysReg) {
genRegCopyWide(cUnit, regLo, regHi, rlSrc.lowReg, rlSrc.highReg);
} else if (rlSrc.location == kLocRetval) {
- loadBaseDispWide(cUnit, NULL, rSELF, offsetof(Thread, retval),
+ loadBaseDispWide(cUnit, NULL, rSELF,
+ offsetof(Thread, interpSave.retval),
regLo, regHi, INVALID_SREG);
} else {
assert(rlSrc.location == kLocDalvikFrame);
@@ -124,7 +125,8 @@ static RegLocation loadValue(CompilationUnit *cUnit, RegLocation rlSrc,
rlSrc.location = kLocPhysReg;
dvmCompilerMarkLive(cUnit, rlSrc.lowReg, rlSrc.sRegLow);
} else if (rlSrc.location == kLocRetval) {
- loadWordDisp(cUnit, rSELF, offsetof(Thread, retval), rlSrc.lowReg);
+ loadWordDisp(cUnit, rSELF, offsetof(Thread, interpSave.retval),
+ rlSrc.lowReg);
rlSrc.location = kLocPhysReg;
dvmCompilerClobber(cUnit, rlSrc.lowReg);
}
@@ -164,7 +166,7 @@ static void storeValue(CompilationUnit *cUnit, RegLocation rlDest,
if (rlDest.location == kLocRetval) {
- storeBaseDisp(cUnit, rSELF, offsetof(Thread, retval),
+ storeBaseDisp(cUnit, rSELF, offsetof(Thread, interpSave.retval),
rlDest.lowReg, kWord);
dvmCompilerClobber(cUnit, rlDest.lowReg);
} else {
@@ -192,7 +194,8 @@ static RegLocation loadValueWide(CompilationUnit *cUnit, RegLocation rlSrc,
dvmCompilerMarkLive(cUnit, rlSrc.highReg,
dvmCompilerSRegHi(rlSrc.sRegLow));
} else if (rlSrc.location == kLocRetval) {
- loadBaseDispWide(cUnit, NULL, rSELF, offsetof(Thread, retval),
+ loadBaseDispWide(cUnit, NULL, rSELF,
+ offsetof(Thread, interpSave.retval),
rlSrc.lowReg, rlSrc.highReg, INVALID_SREG);
rlSrc.location = kLocPhysReg;
dvmCompilerClobber(cUnit, rlSrc.lowReg);
@@ -242,7 +245,7 @@ static void storeValueWide(CompilationUnit *cUnit, RegLocation rlDest,
if (rlDest.location == kLocRetval) {
- storeBaseDispWide(cUnit, rSELF, offsetof(Thread, retval),
+ storeBaseDispWide(cUnit, rSELF, offsetof(Thread, interpSave.retval),
rlDest.lowReg, rlDest.highReg);
dvmCompilerClobber(cUnit, rlDest.lowReg);
dvmCompilerClobber(cUnit, rlDest.highReg);
diff --git a/vm/compiler/codegen/arm/CodegenDriver.cpp b/vm/compiler/codegen/arm/CodegenDriver.cpp
index 5a33ffbf8..b9429a99e 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.cpp
+++ b/vm/compiler/codegen/arm/CodegenDriver.cpp
@@ -3678,7 +3678,7 @@ static bool handleExecuteInlineC(CompilationUnit *cUnit, MIR *mir)
dvmCompilerClobberCallRegs(cUnit);
dvmCompilerClobber(cUnit, r4PC);
dvmCompilerClobber(cUnit, r7);
- int offset = offsetof(Thread, retval);
+ int offset = offsetof(Thread, interpSave.retval);
opRegRegImm(cUnit, kOpAdd, r4PC, r6SELF, offset);
opImm(cUnit, kOpPush, (1<<r4PC) | (1<<r7));
LOAD_FUNC_ADDR(cUnit, r4PC, fn);
diff --git a/vm/compiler/codegen/arm/Thumb/Gen.cpp b/vm/compiler/codegen/arm/Thumb/Gen.cpp
index 18ef76286..abc4420f7 100644
--- a/vm/compiler/codegen/arm/Thumb/Gen.cpp
+++ b/vm/compiler/codegen/arm/Thumb/Gen.cpp
@@ -214,7 +214,7 @@ static void genCmpLong(CompilationUnit *cUnit, MIR *mir, RegLocation rlDest,
static bool genInlinedAbsFloat(CompilationUnit *cUnit, MIR *mir)
{
- int offset = offsetof(Thread, retval);
+ int offset = offsetof(Thread, interpSave.retval);
RegLocation rlSrc = dvmCompilerGetSrc(cUnit, mir, 0);
int reg0 = loadValue(cUnit, rlSrc, kCoreReg).lowReg;
int signMask = dvmCompilerAllocTemp(cUnit);
@@ -229,7 +229,7 @@ static bool genInlinedAbsFloat(CompilationUnit *cUnit, MIR *mir)
static bool genInlinedAbsDouble(CompilationUnit *cUnit, MIR *mir)
{
- int offset = offsetof(Thread, retval);
+ int offset = offsetof(Thread, interpSave.retval);
RegLocation rlSrc = dvmCompilerGetSrcWide(cUnit, mir, 0, 1);
RegLocation regSrc = loadValueWide(cUnit, rlSrc, kCoreReg);
int reglo = regSrc.lowReg;
@@ -248,7 +248,7 @@ static bool genInlinedAbsDouble(CompilationUnit *cUnit, MIR *mir)
/* No select in thumb, so we need to branch. Thumb2 will do better */
static bool genInlinedMinMaxInt(CompilationUnit *cUnit, MIR *mir, bool isMin)
{
- int offset = offsetof(Thread, retval);
+ int offset = offsetof(Thread, interpSave.retval);
RegLocation rlSrc1 = dvmCompilerGetSrc(cUnit, mir, 0);
RegLocation rlSrc2 = dvmCompilerGetSrc(cUnit, mir, 1);
int reg0 = loadValue(cUnit, rlSrc1, kCoreReg).lowReg;