summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-04-30 18:43:30 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-04-30 18:43:30 -0700
commit5a1fcc8a3bf38f74cd8cdcbfe9a67a87b9ad1054 (patch)
treea89b81df4b3033c5e058ac306cb1a1b70ca0c8d1
parent4c5f9711c7ade276a93939ccd1cddb1d68092f33 (diff)
parent7882ef9e459373e31c5e06eb2d2fe96c2e948300 (diff)
downloadandroid_dalvik-5a1fcc8a3bf38f74cd8cdcbfe9a67a87b9ad1054.tar.gz
android_dalvik-5a1fcc8a3bf38f74cd8cdcbfe9a67a87b9ad1054.tar.bz2
android_dalvik-5a1fcc8a3bf38f74cd8cdcbfe9a67a87b9ad1054.zip
Merge changes I8669dfbc,I0ffb15b7,Ib2b8e87a,Ifc7de30e
* changes: Use old frame for dvmReportPreNativeInvoke/dvmReportPostNativeInvoke Restore fp after calling JNI method in allstubs interpreter Fix the warning emitted by codesourcery compiler 4.5.2 Fix instruction logging messages
-rw-r--r--vm/mterp/c/OP_PACKED_SWITCH.cpp2
-rw-r--r--vm/mterp/c/OP_SPARSE_SWITCH.cpp2
-rw-r--r--vm/mterp/c/gotoTargets.cpp10
-rw-r--r--vm/mterp/c/opcommon.cpp16
-rw-r--r--vm/mterp/out/InterpC-allstubs.cpp30
-rw-r--r--vm/mterp/out/InterpC-armv5te-vfp.cpp16
-rw-r--r--vm/mterp/out/InterpC-armv5te.cpp16
-rw-r--r--vm/mterp/out/InterpC-armv7-a-neon.cpp16
-rw-r--r--vm/mterp/out/InterpC-armv7-a.cpp16
-rw-r--r--vm/mterp/out/InterpC-portable.cpp30
-rw-r--r--vm/mterp/out/InterpC-x86-atom.cpp26
-rw-r--r--vm/mterp/out/InterpC-x86.cpp26
12 files changed, 108 insertions, 98 deletions
diff --git a/vm/mterp/c/OP_PACKED_SWITCH.cpp b/vm/mterp/c/OP_PACKED_SWITCH.cpp
index 3922e46e5..c820e8028 100644
--- a/vm/mterp/c/OP_PACKED_SWITCH.cpp
+++ b/vm/mterp/c/OP_PACKED_SWITCH.cpp
@@ -6,7 +6,7 @@ HANDLE_OPCODE(OP_PACKED_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|packed-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|packed-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
diff --git a/vm/mterp/c/OP_SPARSE_SWITCH.cpp b/vm/mterp/c/OP_SPARSE_SWITCH.cpp
index f48d06e50..9ca16ad7a 100644
--- a/vm/mterp/c/OP_SPARSE_SWITCH.cpp
+++ b/vm/mterp/c/OP_SPARSE_SWITCH.cpp
@@ -6,7 +6,7 @@ HANDLE_OPCODE(OP_SPARSE_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|sparse-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|sparse-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
diff --git a/vm/mterp/c/gotoTargets.cpp b/vm/mterp/c/gotoTargets.cpp
index 9d9004679..8b6c18f88 100644
--- a/vm/mterp/c/gotoTargets.cpp
+++ b/vm/mterp/c/gotoTargets.cpp
@@ -961,7 +961,8 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->interpSave.curFrame = fp = newFp;
+ self->interpSave.curFrame = newFp;
+ fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -979,7 +980,7 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPreNativeInvoke(methodToCall, self, fp);
+ dvmReportPreNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -993,12 +994,13 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPostNativeInvoke(methodToCall, self, fp);
+ dvmReportPostNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->interpSave.curFrame = fp;
+ self->interpSave.curFrame = newSaveArea->prevFrame;
+ fp = newSaveArea->prevFrame;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/c/opcommon.cpp b/vm/mterp/c/opcommon.cpp
index 104d8569f..f2e0ecbfe 100644
--- a/vm/mterp/c/opcommon.cpp
+++ b/vm/mterp/c/opcommon.cpp
@@ -525,7 +525,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -552,7 +552,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -596,7 +596,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -623,7 +623,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -673,7 +673,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -696,7 +696,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -719,7 +719,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -742,6 +742,6 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
diff --git a/vm/mterp/out/InterpC-allstubs.cpp b/vm/mterp/out/InterpC-allstubs.cpp
index fac5ef7c3..9410b891f 100644
--- a/vm/mterp/out/InterpC-allstubs.cpp
+++ b/vm/mterp/out/InterpC-allstubs.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1934,7 +1934,7 @@ HANDLE_OPCODE(OP_PACKED_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|packed-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|packed-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
@@ -1965,7 +1965,7 @@ HANDLE_OPCODE(OP_SPARSE_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|sparse-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|sparse-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
@@ -5368,7 +5368,8 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->interpSave.curFrame = fp = newFp;
+ self->interpSave.curFrame = newFp;
+ fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -5386,7 +5387,7 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPreNativeInvoke(methodToCall, self, fp);
+ dvmReportPreNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -5400,12 +5401,13 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPostNativeInvoke(methodToCall, self, fp);
+ dvmReportPostNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->interpSave.curFrame = fp;
+ self->interpSave.curFrame = newSaveArea->prevFrame;
+ fp = newSaveArea->prevFrame;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/out/InterpC-armv5te-vfp.cpp b/vm/mterp/out/InterpC-armv5te-vfp.cpp
index 28f72b338..2d66aad80 100644
--- a/vm/mterp/out/InterpC-armv5te-vfp.cpp
+++ b/vm/mterp/out/InterpC-armv5te-vfp.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
diff --git a/vm/mterp/out/InterpC-armv5te.cpp b/vm/mterp/out/InterpC-armv5te.cpp
index fd9b000e7..878d56889 100644
--- a/vm/mterp/out/InterpC-armv5te.cpp
+++ b/vm/mterp/out/InterpC-armv5te.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
diff --git a/vm/mterp/out/InterpC-armv7-a-neon.cpp b/vm/mterp/out/InterpC-armv7-a-neon.cpp
index 25404d43e..c55dfc0f1 100644
--- a/vm/mterp/out/InterpC-armv7-a-neon.cpp
+++ b/vm/mterp/out/InterpC-armv7-a-neon.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
diff --git a/vm/mterp/out/InterpC-armv7-a.cpp b/vm/mterp/out/InterpC-armv7-a.cpp
index 2cbd5797b..6089a606a 100644
--- a/vm/mterp/out/InterpC-armv7-a.cpp
+++ b/vm/mterp/out/InterpC-armv7-a.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
diff --git a/vm/mterp/out/InterpC-portable.cpp b/vm/mterp/out/InterpC-portable.cpp
index d6a23c0c5..751184f0b 100644
--- a/vm/mterp/out/InterpC-portable.cpp
+++ b/vm/mterp/out/InterpC-portable.cpp
@@ -983,7 +983,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1010,7 +1010,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1054,7 +1054,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1081,7 +1081,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1154,7 +1154,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1177,7 +1177,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1200,7 +1200,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1951,7 +1951,7 @@ HANDLE_OPCODE(OP_PACKED_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|packed-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|packed-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
@@ -1982,7 +1982,7 @@ HANDLE_OPCODE(OP_SPARSE_SWITCH /*vAA, +BBBB*/)
vsrc1 = INST_AA(inst);
offset = FETCH(1) | (((s4) FETCH(2)) << 16);
- ILOGV("|sparse-switch v%d +0x%04x", vsrc1, vsrc2);
+ ILOGV("|sparse-switch v%d +0x%04x", vsrc1, offset);
switchData = pc + offset; // offset in 16-bit units
#ifndef NDEBUG
if (switchData < curMethod->insns ||
@@ -5322,7 +5322,8 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->interpSave.curFrame = fp = newFp;
+ self->interpSave.curFrame = newFp;
+ fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -5340,7 +5341,7 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPreNativeInvoke(methodToCall, self, fp);
+ dvmReportPreNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -5354,12 +5355,13 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPostNativeInvoke(methodToCall, self, fp);
+ dvmReportPostNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->interpSave.curFrame = fp;
+ self->interpSave.curFrame = newSaveArea->prevFrame;
+ fp = newSaveArea->prevFrame;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/out/InterpC-x86-atom.cpp b/vm/mterp/out/InterpC-x86-atom.cpp
index 1f3c18d4c..b64c8a3a2 100644
--- a/vm/mterp/out/InterpC-x86-atom.cpp
+++ b/vm/mterp/out/InterpC-x86-atom.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -2457,7 +2457,8 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->interpSave.curFrame = fp = newFp;
+ self->interpSave.curFrame = newFp;
+ fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -2475,7 +2476,7 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPreNativeInvoke(methodToCall, self, fp);
+ dvmReportPreNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -2489,12 +2490,13 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPostNativeInvoke(methodToCall, self, fp);
+ dvmReportPostNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->interpSave.curFrame = fp;
+ self->interpSave.curFrame = newSaveArea->prevFrame;
+ fp = newSaveArea->prevFrame;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/out/InterpC-x86.cpp b/vm/mterp/out/InterpC-x86.cpp
index 53be42f41..2dd7f0861 100644
--- a/vm/mterp/out/InterpC-x86.cpp
+++ b/vm/mterp/out/InterpC-x86.cpp
@@ -1033,7 +1033,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1060,7 +1060,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, \
dvmGetField##_ftype(obj, ifield->byteOffset)); \
- ILOGV("+ IGET '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IGET '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1104,7 +1104,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1131,7 +1131,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetField##_ftype(obj, ifield->byteOffset, \
GET_REGISTER##_regsize(vdst)); \
- ILOGV("+ IPUT '%s'=0x%08llx", ifield->field.name, \
+ ILOGV("+ IPUT '%s'=0x%08llx", ifield->name, \
(u8) GET_REGISTER##_regsize(vdst)); \
} \
FINISH(5);
@@ -1181,7 +1181,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1204,7 +1204,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
SET_REGISTER##_regsize(vdst, dvmGetStaticField##_ftype(sfield)); \
ILOGV("+ SGET '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -1227,7 +1227,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(2);
@@ -1250,7 +1250,7 @@ GOTO_TARGET_DECL(exceptionThrown);
} \
dvmSetStaticField##_ftype(sfield, GET_REGISTER##_regsize(vdst)); \
ILOGV("+ SPUT '%s'=0x%08llx", \
- sfield->field.name, (u8)GET_REGISTER##_regsize(vdst)); \
+ sfield->name, (u8)GET_REGISTER##_regsize(vdst)); \
} \
FINISH(4);
@@ -2399,7 +2399,8 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->interpSave.curFrame = fp = newFp;
+ self->interpSave.curFrame = newFp;
+ fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -2417,7 +2418,7 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPreNativeInvoke(methodToCall, self, fp);
+ dvmReportPreNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -2431,12 +2432,13 @@ GOTO_TARGET(invokeMethod, bool methodCallRange, const Method* _methodToCall,
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- dvmReportPostNativeInvoke(methodToCall, self, fp);
+ dvmReportPostNativeInvoke(methodToCall, self, newSaveArea->prevFrame);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->interpSave.curFrame = fp;
+ self->interpSave.curFrame = newSaveArea->prevFrame;
+ fp = newSaveArea->prevFrame;
/*
* If the native code threw an exception, or interpreted code