diff options
author | Elliott Hughes <enh@google.com> | 2012-04-30 18:43:30 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-04-30 18:43:30 -0700 |
commit | 5a1fcc8a3bf38f74cd8cdcbfe9a67a87b9ad1054 (patch) | |
tree | a89b81df4b3033c5e058ac306cb1a1b70ca0c8d1 /vm/mterp | |
parent | 4c5f9711c7ade276a93939ccd1cddb1d68092f33 (diff) | |
parent | 7882ef9e459373e31c5e06eb2d2fe96c2e948300 (diff) | |
download | android_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
Diffstat (limited to 'vm/mterp')
-rw-r--r-- | vm/mterp/c/OP_PACKED_SWITCH.cpp | 2 | ||||
-rw-r--r-- | vm/mterp/c/OP_SPARSE_SWITCH.cpp | 2 | ||||
-rw-r--r-- | vm/mterp/c/gotoTargets.cpp | 10 | ||||
-rw-r--r-- | vm/mterp/c/opcommon.cpp | 16 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-allstubs.cpp | 30 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-armv5te-vfp.cpp | 16 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-armv5te.cpp | 16 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-armv7-a-neon.cpp | 16 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-armv7-a.cpp | 16 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-portable.cpp | 30 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-x86-atom.cpp | 26 | ||||
-rw-r--r-- | vm/mterp/out/InterpC-x86.cpp | 26 |
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 |