Consolidate curFrame fields in thread storage
We ended up with two locations in the Thread structure for saved
Dalvik frame pointer. This change consolidates them.
Change-Id: I78f288e4e57e232f29663be930101e775bfe370f
diff --git a/vm/mterp/Mterp.cpp b/vm/mterp/Mterp.cpp
index 7172434..d8ba97d 100644
--- a/vm/mterp/Mterp.cpp
+++ b/vm/mterp/Mterp.cpp
@@ -86,7 +86,7 @@
free(desc);
}
//LOGI("self is %p, pc=%p, fp=%p\n", self, self->interpSave.pc,
- // self->interpSave.fp);
+ // self->interpSave.curFrame);
//LOGI("first instruction is 0x%04x\n", self->interpSave.pc[0]);
/*
diff --git a/vm/mterp/armv5te/footer.S b/vm/mterp/armv5te/footer.S
index b262b1e..7a8ed04 100644
--- a/vm/mterp/armv5te/footer.S
+++ b/vm/mterp/armv5te/footer.S
@@ -641,7 +641,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
cmp r0,#0
bne common_updateProfile
GOTO_OPCODE(ip) @ jump to next instruction
@@ -649,7 +649,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
GOTO_OPCODE(ip) @ jump to next instruction
#endif
@@ -657,7 +657,6 @@
@ Profiling - record method entry. r0: methodToCall
stmfd sp!, {r0-r3} @ preserve r0-r3
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r1, r0
mov r0, rSELF
bl dvmReportInvoke @ (self, method)
@@ -669,7 +668,7 @@
@ r0=methodToCall, r1=newFp, r10=newSaveArea
ldrb lr, [rSELF, #offThread_subMode]
ldr r9, [rSELF, #offThread_jniLocal_topCookie]@r9<-thread->localRef->...
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
str r9, [r10, #offStackSaveArea_localRefCookie] @newFp->localRefCookie=top
mov r2, r0 @ r2<- methodToCall
mov r0, r1 @ r0<- newFp (points to args)
@@ -697,7 +696,7 @@
@ equivalent to dvmPopJniLocals
ldr r0, [r10, #offStackSaveArea_localRefCookie] @ r0<- saved top
ldr r1, [rSELF, #offThread_exception] @ check for exception
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
cmp r1, #0 @ null?
str r0, [rSELF, #offThread_jniLocal_topCookie] @ new top <- old top
bne common_exceptionThrown @ no, handle exception
@@ -709,11 +708,10 @@
11:
@ r0=newFp, r1=&retval, r2=methodToCall, r3=self, lr=subModes
stmfd sp!, {r0-r3} @ save all but subModes
- str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPreNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPreNativeInvoke @ (methodToCall, self, fp)
ldmfd sp, {r0-r3} @ refresh. NOTE: no sp autoincrement
@ Call the native method
@@ -724,10 +722,10 @@
ldmfd sp!, {r0-r3} @ r2<- methodToCall (others unneeded)
@ Finish up any post-invoke subMode requirements
- @ interpSave already up-to-date
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPostNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPostNativeInvoke @ (methodToCall, self, fp)
b 7b @ resume
.LstackOverflow: @ r0=methodToCall
@@ -800,7 +798,7 @@
PREFETCH_ADVANCE_INST(rINST, r9, 3) @ advance r9, update new rINST
str r2, [rSELF, #offThread_method]@ self->method = newSave->method
ldr r1, [r10, #offClassObject_pDvmDex] @ r1<- method->clazz->pDvmDex
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
#if defined(WITH_JIT)
ldr r10, [r0, #offStackSaveArea_returnAddr] @ r10 = saveArea->returnAddr
mov rPC, r9 @ publish new rPC
@@ -822,7 +820,7 @@
@ On entry, r0: StackSaveArea
ldr r1, [r0, #offStackSaveArea_prevFrame] @ r2<- prevFP
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str r1, [rSELF, #offThread_fp] @ update interpSave.fp
+ str r1, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF
bl dvmReportReturn @ (self)
SAVEAREA_FROM_FP(r0, rFP) @ restore StackSaveArea
@@ -905,7 +903,7 @@
add sp, sp, #8 @ restore stack
bmi .LnotCaughtLocally
- /* adjust locals to match self->curFrame and updated PC */
+ /* adjust locals to match self->interpSave.curFrame and updated PC */
SAVEAREA_FROM_FP(r1, rFP) @ r1<- new save area
ldr r1, [r1, #offStackSaveArea_method] @ r1<- new method
str r1, [rSELF, #offThread_method] @ self->method = new method
@@ -931,7 +929,7 @@
@ Manage debugger bookkeeping
7:
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
+ str rFP, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF @ arg0<- self
mov r1, r9 @ arg1<- exception
bl dvmReportExceptionThrow @ (self, exception)
diff --git a/vm/mterp/armv5te/header.S b/vm/mterp/armv5te/header.S
index ad45eb7..b3c8f0a 100644
--- a/vm/mterp/armv5te/header.S
+++ b/vm/mterp/armv5te/header.S
@@ -75,8 +75,8 @@
/* save/restore the PC and/or FP from the thread struct */
#define LOAD_PC_FROM_SELF() ldr rPC, [rSELF, #offThread_pc]
#define SAVE_PC_TO_SELF() str rPC, [rSELF, #offThread_pc]
-#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_fp]
-#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_fp]
+#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_curFrame]
+#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_curFrame]
#define LOAD_PC_FP_FROM_SELF() ldmia rSELF, {rPC, rFP}
#define SAVE_PC_FP_TO_SELF() stmia rSELF, {rPC, rFP}
diff --git a/vm/mterp/c/gotoTargets.cpp b/vm/mterp/c/gotoTargets.cpp
index cd12229..c615cba 100644
--- a/vm/mterp/c/gotoTargets.cpp
+++ b/vm/mterp/c/gotoTargets.cpp
@@ -629,7 +629,7 @@
}
/* update thread FP, and reset local variables */
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -766,10 +766,10 @@
#endif
/*
- * Adjust local variables to match self->curFrame and the
+ * Adjust local variables to match self->interpSave.curFrame and the
* updated PC.
*/
- //fp = (u4*) self->curFrame;
+ //fp = (u4*) self->interpSave.curFrame;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -948,7 +948,7 @@
* calls. For native calls, we'll mark EXIT on return.
* For non-native calls, EXIT is marked in the RETURN op.
*/
- PC_FP_TO_SELF();
+ PC_TO_SELF();
dvmReportInvoke(self, methodToCall);
}
@@ -961,7 +961,7 @@
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->curFrame = fp = newFp;
+ self->interpSave.curFrame = fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -974,13 +974,12 @@
/* set this up for JNI locals, even if not a JNI native */
newSaveArea->xtra.localRefCookie = self->jniLocalRefTable.segmentState.all;
- self->curFrame = newFp;
+ self->interpSave.curFrame = newFp;
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPreNativeInvoke(methodToCall, self);
+ dvmReportPreNativeInvoke(methodToCall, self, fp);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -994,13 +993,12 @@
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPostNativeInvoke(methodToCall, self);
+ dvmReportPostNativeInvoke(methodToCall, self, fp);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/common/asm-constants.h b/vm/mterp/common/asm-constants.h
index 048dcbe..5b9b006 100644
--- a/vm/mterp/common/asm-constants.h
+++ b/vm/mterp/common/asm-constants.h
@@ -155,7 +155,7 @@
/* Thread fields */
MTERP_OFFSET(offThread_pc, Thread, interpSave.pc, 0)
-MTERP_OFFSET(offThread_fp, Thread, interpSave.fp, 4)
+MTERP_OFFSET(offThread_curFrame, Thread, interpSave.curFrame, 4)
MTERP_OFFSET(offThread_method, Thread, interpSave.method, 8)
MTERP_OFFSET(offThread_methodClassDex, Thread, interpSave.methodClassDex, 12)
MTERP_OFFSET(offThread_bailPtr, Thread, interpSave.bailPtr, 16)
@@ -168,25 +168,23 @@
MTERP_OFFSET(offThread_retval_j, Thread, retval.j, 32)
MTERP_OFFSET(offThread_retval_l, Thread, retval.l, 32)
//40
-MTERP_OFFSET(offThread_cardTable, Thread, cardTable, 40)
-MTERP_OFFSET(offThread_interpStackEnd, Thread, interpStackEnd, 44)
-MTERP_OFFSET(offThread_curFrame, Thread, curFrame, 48)
-MTERP_OFFSET(offThread_exception, Thread, exception, 52)
-MTERP_OFFSET(offThread_debugIsMethodEntry, Thread, debugIsMethodEntry, 56)
-MTERP_OFFSET(offThread_interpStackSize, Thread, interpStackSize, 60)
-MTERP_OFFSET(offThread_stackOverflowed, Thread, stackOverflowed, 64)
MTERP_OFFSET(offThread_breakFlags, \
- Thread, interpBreak.ctl.breakFlags, 72)
+ Thread, interpBreak.ctl.breakFlags, 40)
MTERP_OFFSET(offThread_subMode, \
- Thread, interpBreak.ctl.subMode, 73)
+ Thread, interpBreak.ctl.subMode, 41)
MTERP_OFFSET(offThread_suspendCount, \
- Thread, interpBreak.ctl.suspendCount, 74)
+ Thread, interpBreak.ctl.suspendCount, 42)
MTERP_OFFSET(offThread_dbgSuspendCount, \
- Thread, interpBreak.ctl.dbgSuspendCount, 75)
+ Thread, interpBreak.ctl.dbgSuspendCount, 43)
MTERP_OFFSET(offThread_curHandlerTable, \
- Thread, interpBreak.ctl.curHandlerTable, 76)
+ Thread, interpBreak.ctl.curHandlerTable, 44)
+MTERP_OFFSET(offThread_cardTable, Thread, cardTable, 48)
+MTERP_OFFSET(offThread_interpStackEnd, Thread, interpStackEnd, 52)
+MTERP_OFFSET(offThread_exception, Thread, exception, 60)
+MTERP_OFFSET(offThread_debugIsMethodEntry, Thread, debugIsMethodEntry, 64)
+MTERP_OFFSET(offThread_interpStackSize, Thread, interpStackSize, 68)
+MTERP_OFFSET(offThread_stackOverflowed, Thread, stackOverflowed, 72)
MTERP_OFFSET(offThread_mainHandlerTable, Thread, mainHandlerTable, 80)
-
MTERP_OFFSET(offThread_singleStepCount, Thread, singleStepCount, 88)
#ifdef WITH_JIT
diff --git a/vm/mterp/cstubs/stubdefs.cpp b/vm/mterp/cstubs/stubdefs.cpp
index e81acdc..ba2fe81 100644
--- a/vm/mterp/cstubs/stubdefs.cpp
+++ b/vm/mterp/cstubs/stubdefs.cpp
@@ -24,7 +24,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -44,6 +44,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
diff --git a/vm/mterp/out/InterpAsm-armv5te-vfp.S b/vm/mterp/out/InterpAsm-armv5te-vfp.S
index 77be638..115a7d2 100644
--- a/vm/mterp/out/InterpAsm-armv5te-vfp.S
+++ b/vm/mterp/out/InterpAsm-armv5te-vfp.S
@@ -82,8 +82,8 @@
/* save/restore the PC and/or FP from the thread struct */
#define LOAD_PC_FROM_SELF() ldr rPC, [rSELF, #offThread_pc]
#define SAVE_PC_TO_SELF() str rPC, [rSELF, #offThread_pc]
-#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_fp]
-#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_fp]
+#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_curFrame]
+#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_curFrame]
#define LOAD_PC_FP_FROM_SELF() ldmia rSELF, {rPC, rFP}
#define SAVE_PC_FP_TO_SELF() stmia rSELF, {rPC, rFP}
@@ -26845,7 +26845,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
cmp r0,#0
bne common_updateProfile
GOTO_OPCODE(ip) @ jump to next instruction
@@ -26853,7 +26853,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
GOTO_OPCODE(ip) @ jump to next instruction
#endif
@@ -26861,7 +26861,6 @@
@ Profiling - record method entry. r0: methodToCall
stmfd sp!, {r0-r3} @ preserve r0-r3
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r1, r0
mov r0, rSELF
bl dvmReportInvoke @ (self, method)
@@ -26873,7 +26872,7 @@
@ r0=methodToCall, r1=newFp, r10=newSaveArea
ldrb lr, [rSELF, #offThread_subMode]
ldr r9, [rSELF, #offThread_jniLocal_topCookie]@r9<-thread->localRef->...
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
str r9, [r10, #offStackSaveArea_localRefCookie] @newFp->localRefCookie=top
mov r2, r0 @ r2<- methodToCall
mov r0, r1 @ r0<- newFp (points to args)
@@ -26901,7 +26900,7 @@
@ equivalent to dvmPopJniLocals
ldr r0, [r10, #offStackSaveArea_localRefCookie] @ r0<- saved top
ldr r1, [rSELF, #offThread_exception] @ check for exception
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
cmp r1, #0 @ null?
str r0, [rSELF, #offThread_jniLocal_topCookie] @ new top <- old top
bne common_exceptionThrown @ no, handle exception
@@ -26913,11 +26912,10 @@
11:
@ r0=newFp, r1=&retval, r2=methodToCall, r3=self, lr=subModes
stmfd sp!, {r0-r3} @ save all but subModes
- str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPreNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPreNativeInvoke @ (methodToCall, self, fp)
ldmfd sp, {r0-r3} @ refresh. NOTE: no sp autoincrement
@ Call the native method
@@ -26928,10 +26926,10 @@
ldmfd sp!, {r0-r3} @ r2<- methodToCall (others unneeded)
@ Finish up any post-invoke subMode requirements
- @ interpSave already up-to-date
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPostNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPostNativeInvoke @ (methodToCall, self, fp)
b 7b @ resume
.LstackOverflow: @ r0=methodToCall
@@ -27004,7 +27002,7 @@
PREFETCH_ADVANCE_INST(rINST, r9, 3) @ advance r9, update new rINST
str r2, [rSELF, #offThread_method]@ self->method = newSave->method
ldr r1, [r10, #offClassObject_pDvmDex] @ r1<- method->clazz->pDvmDex
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
#if defined(WITH_JIT)
ldr r10, [r0, #offStackSaveArea_returnAddr] @ r10 = saveArea->returnAddr
mov rPC, r9 @ publish new rPC
@@ -27026,7 +27024,7 @@
@ On entry, r0: StackSaveArea
ldr r1, [r0, #offStackSaveArea_prevFrame] @ r2<- prevFP
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str r1, [rSELF, #offThread_fp] @ update interpSave.fp
+ str r1, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF
bl dvmReportReturn @ (self)
SAVEAREA_FROM_FP(r0, rFP) @ restore StackSaveArea
@@ -27109,7 +27107,7 @@
add sp, sp, #8 @ restore stack
bmi .LnotCaughtLocally
- /* adjust locals to match self->curFrame and updated PC */
+ /* adjust locals to match self->interpSave.curFrame and updated PC */
SAVEAREA_FROM_FP(r1, rFP) @ r1<- new save area
ldr r1, [r1, #offStackSaveArea_method] @ r1<- new method
str r1, [rSELF, #offThread_method] @ self->method = new method
@@ -27135,7 +27133,7 @@
@ Manage debugger bookkeeping
7:
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
+ str rFP, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF @ arg0<- self
mov r1, r9 @ arg1<- exception
bl dvmReportExceptionThrow @ (self, exception)
diff --git a/vm/mterp/out/InterpAsm-armv5te.S b/vm/mterp/out/InterpAsm-armv5te.S
index b46c3ee..665178b 100644
--- a/vm/mterp/out/InterpAsm-armv5te.S
+++ b/vm/mterp/out/InterpAsm-armv5te.S
@@ -82,8 +82,8 @@
/* save/restore the PC and/or FP from the thread struct */
#define LOAD_PC_FROM_SELF() ldr rPC, [rSELF, #offThread_pc]
#define SAVE_PC_TO_SELF() str rPC, [rSELF, #offThread_pc]
-#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_fp]
-#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_fp]
+#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_curFrame]
+#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_curFrame]
#define LOAD_PC_FP_FROM_SELF() ldmia rSELF, {rPC, rFP}
#define SAVE_PC_FP_TO_SELF() stmia rSELF, {rPC, rFP}
@@ -27303,7 +27303,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
cmp r0,#0
bne common_updateProfile
GOTO_OPCODE(ip) @ jump to next instruction
@@ -27311,7 +27311,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
GOTO_OPCODE(ip) @ jump to next instruction
#endif
@@ -27319,7 +27319,6 @@
@ Profiling - record method entry. r0: methodToCall
stmfd sp!, {r0-r3} @ preserve r0-r3
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r1, r0
mov r0, rSELF
bl dvmReportInvoke @ (self, method)
@@ -27331,7 +27330,7 @@
@ r0=methodToCall, r1=newFp, r10=newSaveArea
ldrb lr, [rSELF, #offThread_subMode]
ldr r9, [rSELF, #offThread_jniLocal_topCookie]@r9<-thread->localRef->...
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
str r9, [r10, #offStackSaveArea_localRefCookie] @newFp->localRefCookie=top
mov r2, r0 @ r2<- methodToCall
mov r0, r1 @ r0<- newFp (points to args)
@@ -27359,7 +27358,7 @@
@ equivalent to dvmPopJniLocals
ldr r0, [r10, #offStackSaveArea_localRefCookie] @ r0<- saved top
ldr r1, [rSELF, #offThread_exception] @ check for exception
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
cmp r1, #0 @ null?
str r0, [rSELF, #offThread_jniLocal_topCookie] @ new top <- old top
bne common_exceptionThrown @ no, handle exception
@@ -27371,11 +27370,10 @@
11:
@ r0=newFp, r1=&retval, r2=methodToCall, r3=self, lr=subModes
stmfd sp!, {r0-r3} @ save all but subModes
- str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPreNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPreNativeInvoke @ (methodToCall, self, fp)
ldmfd sp, {r0-r3} @ refresh. NOTE: no sp autoincrement
@ Call the native method
@@ -27386,10 +27384,10 @@
ldmfd sp!, {r0-r3} @ r2<- methodToCall (others unneeded)
@ Finish up any post-invoke subMode requirements
- @ interpSave already up-to-date
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPostNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPostNativeInvoke @ (methodToCall, self, fp)
b 7b @ resume
.LstackOverflow: @ r0=methodToCall
@@ -27462,7 +27460,7 @@
PREFETCH_ADVANCE_INST(rINST, r9, 3) @ advance r9, update new rINST
str r2, [rSELF, #offThread_method]@ self->method = newSave->method
ldr r1, [r10, #offClassObject_pDvmDex] @ r1<- method->clazz->pDvmDex
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
#if defined(WITH_JIT)
ldr r10, [r0, #offStackSaveArea_returnAddr] @ r10 = saveArea->returnAddr
mov rPC, r9 @ publish new rPC
@@ -27484,7 +27482,7 @@
@ On entry, r0: StackSaveArea
ldr r1, [r0, #offStackSaveArea_prevFrame] @ r2<- prevFP
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str r1, [rSELF, #offThread_fp] @ update interpSave.fp
+ str r1, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF
bl dvmReportReturn @ (self)
SAVEAREA_FROM_FP(r0, rFP) @ restore StackSaveArea
@@ -27567,7 +27565,7 @@
add sp, sp, #8 @ restore stack
bmi .LnotCaughtLocally
- /* adjust locals to match self->curFrame and updated PC */
+ /* adjust locals to match self->interpSave.curFrame and updated PC */
SAVEAREA_FROM_FP(r1, rFP) @ r1<- new save area
ldr r1, [r1, #offStackSaveArea_method] @ r1<- new method
str r1, [rSELF, #offThread_method] @ self->method = new method
@@ -27593,7 +27591,7 @@
@ Manage debugger bookkeeping
7:
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
+ str rFP, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF @ arg0<- self
mov r1, r9 @ arg1<- exception
bl dvmReportExceptionThrow @ (self, exception)
diff --git a/vm/mterp/out/InterpAsm-armv7-a-neon.S b/vm/mterp/out/InterpAsm-armv7-a-neon.S
index 4694cf7..e1f54fb 100644
--- a/vm/mterp/out/InterpAsm-armv7-a-neon.S
+++ b/vm/mterp/out/InterpAsm-armv7-a-neon.S
@@ -82,8 +82,8 @@
/* save/restore the PC and/or FP from the thread struct */
#define LOAD_PC_FROM_SELF() ldr rPC, [rSELF, #offThread_pc]
#define SAVE_PC_TO_SELF() str rPC, [rSELF, #offThread_pc]
-#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_fp]
-#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_fp]
+#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_curFrame]
+#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_curFrame]
#define LOAD_PC_FP_FROM_SELF() ldmia rSELF, {rPC, rFP}
#define SAVE_PC_FP_TO_SELF() stmia rSELF, {rPC, rFP}
@@ -26783,7 +26783,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
cmp r0,#0
bne common_updateProfile
GOTO_OPCODE(ip) @ jump to next instruction
@@ -26791,7 +26791,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
GOTO_OPCODE(ip) @ jump to next instruction
#endif
@@ -26799,7 +26799,6 @@
@ Profiling - record method entry. r0: methodToCall
stmfd sp!, {r0-r3} @ preserve r0-r3
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r1, r0
mov r0, rSELF
bl dvmReportInvoke @ (self, method)
@@ -26811,7 +26810,7 @@
@ r0=methodToCall, r1=newFp, r10=newSaveArea
ldrb lr, [rSELF, #offThread_subMode]
ldr r9, [rSELF, #offThread_jniLocal_topCookie]@r9<-thread->localRef->...
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
str r9, [r10, #offStackSaveArea_localRefCookie] @newFp->localRefCookie=top
mov r2, r0 @ r2<- methodToCall
mov r0, r1 @ r0<- newFp (points to args)
@@ -26839,7 +26838,7 @@
@ equivalent to dvmPopJniLocals
ldr r0, [r10, #offStackSaveArea_localRefCookie] @ r0<- saved top
ldr r1, [rSELF, #offThread_exception] @ check for exception
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
cmp r1, #0 @ null?
str r0, [rSELF, #offThread_jniLocal_topCookie] @ new top <- old top
bne common_exceptionThrown @ no, handle exception
@@ -26851,11 +26850,10 @@
11:
@ r0=newFp, r1=&retval, r2=methodToCall, r3=self, lr=subModes
stmfd sp!, {r0-r3} @ save all but subModes
- str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPreNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPreNativeInvoke @ (methodToCall, self, fp)
ldmfd sp, {r0-r3} @ refresh. NOTE: no sp autoincrement
@ Call the native method
@@ -26866,10 +26864,10 @@
ldmfd sp!, {r0-r3} @ r2<- methodToCall (others unneeded)
@ Finish up any post-invoke subMode requirements
- @ interpSave already up-to-date
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPostNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPostNativeInvoke @ (methodToCall, self, fp)
b 7b @ resume
.LstackOverflow: @ r0=methodToCall
@@ -26942,7 +26940,7 @@
PREFETCH_ADVANCE_INST(rINST, r9, 3) @ advance r9, update new rINST
str r2, [rSELF, #offThread_method]@ self->method = newSave->method
ldr r1, [r10, #offClassObject_pDvmDex] @ r1<- method->clazz->pDvmDex
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
#if defined(WITH_JIT)
ldr r10, [r0, #offStackSaveArea_returnAddr] @ r10 = saveArea->returnAddr
mov rPC, r9 @ publish new rPC
@@ -26964,7 +26962,7 @@
@ On entry, r0: StackSaveArea
ldr r1, [r0, #offStackSaveArea_prevFrame] @ r2<- prevFP
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str r1, [rSELF, #offThread_fp] @ update interpSave.fp
+ str r1, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF
bl dvmReportReturn @ (self)
SAVEAREA_FROM_FP(r0, rFP) @ restore StackSaveArea
@@ -27047,7 +27045,7 @@
add sp, sp, #8 @ restore stack
bmi .LnotCaughtLocally
- /* adjust locals to match self->curFrame and updated PC */
+ /* adjust locals to match self->interpSave.curFrame and updated PC */
SAVEAREA_FROM_FP(r1, rFP) @ r1<- new save area
ldr r1, [r1, #offStackSaveArea_method] @ r1<- new method
str r1, [rSELF, #offThread_method] @ self->method = new method
@@ -27073,7 +27071,7 @@
@ Manage debugger bookkeeping
7:
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
+ str rFP, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF @ arg0<- self
mov r1, r9 @ arg1<- exception
bl dvmReportExceptionThrow @ (self, exception)
diff --git a/vm/mterp/out/InterpAsm-armv7-a.S b/vm/mterp/out/InterpAsm-armv7-a.S
index 5a291f0..6a36b6d 100644
--- a/vm/mterp/out/InterpAsm-armv7-a.S
+++ b/vm/mterp/out/InterpAsm-armv7-a.S
@@ -82,8 +82,8 @@
/* save/restore the PC and/or FP from the thread struct */
#define LOAD_PC_FROM_SELF() ldr rPC, [rSELF, #offThread_pc]
#define SAVE_PC_TO_SELF() str rPC, [rSELF, #offThread_pc]
-#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_fp]
-#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_fp]
+#define LOAD_FP_FROM_SELF() ldr rFP, [rSELF, #offThread_curFrame]
+#define SAVE_FP_TO_SELF() str rFP, [rSELF, #offThread_curFrame]
#define LOAD_PC_FP_FROM_SELF() ldmia rSELF, {rPC, rFP}
#define SAVE_PC_FP_TO_SELF() stmia rSELF, {rPC, rFP}
@@ -26783,7 +26783,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
cmp r0,#0
bne common_updateProfile
GOTO_OPCODE(ip) @ jump to next instruction
@@ -26791,7 +26791,7 @@
mov rFP, r1 @ fp = newFp
GET_PREFETCHED_OPCODE(ip, r9) @ extract prefetched opcode from r9
mov rINST, r9 @ publish new rINST
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
GOTO_OPCODE(ip) @ jump to next instruction
#endif
@@ -26799,7 +26799,6 @@
@ Profiling - record method entry. r0: methodToCall
stmfd sp!, {r0-r3} @ preserve r0-r3
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r1, r0
mov r0, rSELF
bl dvmReportInvoke @ (self, method)
@@ -26811,7 +26810,7 @@
@ r0=methodToCall, r1=newFp, r10=newSaveArea
ldrb lr, [rSELF, #offThread_subMode]
ldr r9, [rSELF, #offThread_jniLocal_topCookie]@r9<-thread->localRef->...
- str r1, [rSELF, #offThread_curFrame] @ self->curFrame = newFp
+ str r1, [rSELF, #offThread_curFrame] @ curFrame = newFp
str r9, [r10, #offStackSaveArea_localRefCookie] @newFp->localRefCookie=top
mov r2, r0 @ r2<- methodToCall
mov r0, r1 @ r0<- newFp (points to args)
@@ -26839,7 +26838,7 @@
@ equivalent to dvmPopJniLocals
ldr r0, [r10, #offStackSaveArea_localRefCookie] @ r0<- saved top
ldr r1, [rSELF, #offThread_exception] @ check for exception
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
cmp r1, #0 @ null?
str r0, [rSELF, #offThread_jniLocal_topCookie] @ new top <- old top
bne common_exceptionThrown @ no, handle exception
@@ -26851,11 +26850,10 @@
11:
@ r0=newFp, r1=&retval, r2=methodToCall, r3=self, lr=subModes
stmfd sp!, {r0-r3} @ save all but subModes
- str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPreNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPreNativeInvoke @ (methodToCall, self, fp)
ldmfd sp, {r0-r3} @ refresh. NOTE: no sp autoincrement
@ Call the native method
@@ -26866,10 +26864,10 @@
ldmfd sp!, {r0-r3} @ r2<- methodToCall (others unneeded)
@ Finish up any post-invoke subMode requirements
- @ interpSave already up-to-date
mov r0, r2 @ r0<- methodToCall
mov r1, rSELF
- bl dvmReportPostNativeInvoke @ (methodToCall, self)
+ mov r2, rFP
+ bl dvmReportPostNativeInvoke @ (methodToCall, self, fp)
b 7b @ resume
.LstackOverflow: @ r0=methodToCall
@@ -26942,7 +26940,7 @@
PREFETCH_ADVANCE_INST(rINST, r9, 3) @ advance r9, update new rINST
str r2, [rSELF, #offThread_method]@ self->method = newSave->method
ldr r1, [r10, #offClassObject_pDvmDex] @ r1<- method->clazz->pDvmDex
- str rFP, [rSELF, #offThread_curFrame] @ self->curFrame = fp
+ str rFP, [rSELF, #offThread_curFrame] @ curFrame = fp
#if defined(WITH_JIT)
ldr r10, [r0, #offStackSaveArea_returnAddr] @ r10 = saveArea->returnAddr
mov rPC, r9 @ publish new rPC
@@ -26964,7 +26962,7 @@
@ On entry, r0: StackSaveArea
ldr r1, [r0, #offStackSaveArea_prevFrame] @ r2<- prevFP
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str r1, [rSELF, #offThread_fp] @ update interpSave.fp
+ str r1, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF
bl dvmReportReturn @ (self)
SAVEAREA_FROM_FP(r0, rFP) @ restore StackSaveArea
@@ -27047,7 +27045,7 @@
add sp, sp, #8 @ restore stack
bmi .LnotCaughtLocally
- /* adjust locals to match self->curFrame and updated PC */
+ /* adjust locals to match self->interpSave.curFrame and updated PC */
SAVEAREA_FROM_FP(r1, rFP) @ r1<- new save area
ldr r1, [r1, #offStackSaveArea_method] @ r1<- new method
str r1, [rSELF, #offThread_method] @ self->method = new method
@@ -27073,7 +27071,7 @@
@ Manage debugger bookkeeping
7:
str rPC, [rSELF, #offThread_pc] @ update interpSave.pc
- str rFP, [rSELF, #offThread_fp] @ update interpSave.fp
+ str rFP, [rSELF, #offThread_curFrame] @ update interpSave.curFrame
mov r0, rSELF @ arg0<- self
mov r1, r9 @ arg1<- exception
bl dvmReportExceptionThrow @ (self, exception)
diff --git a/vm/mterp/out/InterpAsm-x86.S b/vm/mterp/out/InterpAsm-x86.S
index 68fccd1..5ae3fc3 100644
--- a/vm/mterp/out/InterpAsm-x86.S
+++ b/vm/mterp/out/InterpAsm-x86.S
@@ -130,13 +130,13 @@
.macro SAVE_PC_FP_TO_SELF _reg
movl rSELF,\_reg
movl rPC,offThread_pc(\_reg)
- movl rFP,offThread_fp(\_reg)
+ movl rFP,offThread_curFrame(\_reg)
.endm
.macro LOAD_PC_FP_FROM_SELF
movl rSELF,rFP
movl offThread_pc(rFP),rPC
- movl offThread_fp(rFP),rFP
+ movl offThread_curFrame(rFP),rFP
.endm
/* The interpreter assumes a properly aligned stack on entry, and
@@ -25880,7 +25880,7 @@
/* Set up "named" registers */
movl offThread_pc(%ecx),rPC
- movl offThread_fp(%ecx),rFP
+ movl offThread_curFrame(%ecx),rFP
movl offThread_curHandlerTable(%ecx),rIBASE
/* Remember %esp for future "longjmp" */
@@ -26324,7 +26324,7 @@
movl offMethod_insns(%eax), rPC # rPC<- methodToCall->insns
movl $1, offThread_debugIsMethodEntry(%ecx)
movl LOCAL1_OFFSET(%ebp), rFP # rFP<- newFP
- movl rFP, offThread_curFrame(%ecx) # self->curFrame<- newFP
+ movl rFP, offThread_curFrame(%ecx) # curFrame<-newFP
movl offThread_curHandlerTable(%ecx),rIBASE
FETCH_INST
GOTO_NEXT # jump to methodToCall->insns
@@ -26339,7 +26339,6 @@
SPILL_TMP1(%eax) # preserve methodToCall
SPILL_TMP2(%edx) # preserve newSaveArea
movl rPC, offThread_pc(%ecx) # update interpSave.pc
- movl rFP, offThread_fp(%ecx) # update interpSave.fp
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
call dvmReportInvoke # (self, method)
@@ -26358,7 +26357,7 @@
movl rINST, offStackSaveArea_localRefCookie(%edx) # newSaveArea->localRefCookie<- top
movl %edx, LOCAL2_OFFSET(%ebp) # save newSaveArea
movl LOCAL1_OFFSET(%ebp), rINST # rINST<- newFP
- movl rINST, offThread_curFrame(%ecx) # self->curFrame<- newFP
+ movl rINST, offThread_curFrame(%ecx) # curFrame<- newFP
cmpb $0, offThread_subMode(%ecx) # Anything special going on?
jne 11f # yes - handle it
movl %ecx, OUT_ARG3(%esp) # push parameter self
@@ -26372,7 +26371,7 @@
movl rSELF, %eax # %eax<- self
movl offStackSaveArea_localRefCookie(%ecx), %edx # %edx<- old top
cmp $0, offThread_exception(%eax) # check for exception
- movl rFP, offThread_curFrame(%eax) # self->curFrame<- rFP
+ movl rFP, offThread_curFrame(%eax) # curFrame<- rFP
movl %edx, offThread_jniLocal_topCookie(%eax) # new top <- old top
jne common_exceptionThrown # handle exception
movl offThread_curHandlerTable(%eax),rIBASE
@@ -26387,10 +26386,10 @@
*/
SPILL_TMP1(%eax) # save methodTocall
movl rPC, offThread_pc(%ecx)
- movl rFP, offThread_fp(%ecx)
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
- call dvmReportPreNativeInvoke # (self, methodToCall)
+ movl rFP, OUT_ARG2(%esp)
+ call dvmReportPreNativeInvoke # (self, methodToCall, fp)
UNSPILL_TMP1(%eax) # restore methodToCall
movl rSELF,%ecx # restore self
@@ -26406,7 +26405,8 @@
movl rSELF, %ecx
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
- call dvmReportPostNativeInvoke # (self, methodToCall)
+ movl rFP, OUT_ARG2(%esp)
+ call dvmReportPostNativeInvoke # (self, methodToCall, fp)
jmp 7b # rejoin
.LstackOverflow: # eax=methodToCall
@@ -26433,7 +26433,7 @@
movl offStackSaveArea_savedPc(%eax),rPC # pc<- saveArea->savedPC
movl rINST,offThread_method(%ecx) # self->method = newSave->meethod
- movl rFP,offThread_curFrame(%ecx) # self->curFrame = fp
+ movl rFP,offThread_curFrame(%ecx) # curFrame = fp
movl offMethod_clazz(rINST),%eax # eax<- method->clazz
movl offThread_curHandlerTable(%ecx),rIBASE
movl offClassObject_pDvmDex(%eax),rINST # rINST<- method->clazz->pDvmDex
@@ -26447,7 +26447,7 @@
* Handle special subMode actions
* On entry, rFP: prevFP, %ecx: self, %eax: saveArea
*/
- movl rFP, offThread_fp(%ecx) # update interpSave.fp
+ movl rFP, offThread_curFrame(%ecx) # update interpSave.curFrame
movl rPC, offThread_pc(%ecx) # update interpSave.pc
movl %ecx, OUT_ARG0(%esp) # parameter self
call dvmReportReturn # (self)
@@ -26468,7 +26468,7 @@
*/
common_gotoBail:
movl rPC,offThread_pc(%ecx) # export state to self
- movl rFP,offThread_fp(%ecx)
+ movl rFP,offThread_curFrame(%ecx)
movl %ecx,OUT_ARG0(%esp) # self in arg0
movl rINST,OUT_ARG1(%esp) # changeInterp in arg1
call dvmMterpStdBail # bail out....
@@ -26481,7 +26481,7 @@
common_resumeAfterGlueCall:
movl rSELF, %eax
movl offThread_pc(%eax),rPC
- movl offThread_fp(%eax),rFP
+ movl offThread_curFrame(%eax),rFP
movl offThread_curHandlerTable(%eax),rIBASE
FETCH_INST
GOTO_NEXT
@@ -26556,7 +26556,7 @@
common_exceptionThrown:
movl rSELF,%ecx
movl rPC,offThread_pc(%ecx)
- movl rFP,offThread_fp(%ecx)
+ movl rFP,offThread_curFrame(%ecx)
movl %ecx,OUT_ARG0(%esp)
call dvmMterp_exceptionThrown
jmp common_resumeAfterGlueCall
diff --git a/vm/mterp/out/InterpC-allstubs.cpp b/vm/mterp/out/InterpC-allstubs.cpp
index 7859c2d..1356597 100644
--- a/vm/mterp/out/InterpC-allstubs.cpp
+++ b/vm/mterp/out/InterpC-allstubs.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
@@ -5053,7 +5054,7 @@
}
/* update thread FP, and reset local variables */
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -5190,10 +5191,10 @@
#endif
/*
- * Adjust local variables to match self->curFrame and the
+ * Adjust local variables to match self->interpSave.curFrame and the
* updated PC.
*/
- //fp = (u4*) self->curFrame;
+ //fp = (u4*) self->interpSave.curFrame;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -5372,7 +5373,7 @@
* calls. For native calls, we'll mark EXIT on return.
* For non-native calls, EXIT is marked in the RETURN op.
*/
- PC_FP_TO_SELF();
+ PC_TO_SELF();
dvmReportInvoke(self, methodToCall);
}
@@ -5385,7 +5386,7 @@
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->curFrame = fp = newFp;
+ self->interpSave.curFrame = fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -5398,13 +5399,12 @@
/* set this up for JNI locals, even if not a JNI native */
newSaveArea->xtra.localRefCookie = self->jniLocalRefTable.segmentState.all;
- self->curFrame = newFp;
+ self->interpSave.curFrame = newFp;
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPreNativeInvoke(methodToCall, self);
+ dvmReportPreNativeInvoke(methodToCall, self, fp);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -5418,13 +5418,12 @@
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPostNativeInvoke(methodToCall, self);
+ dvmReportPostNativeInvoke(methodToCall, self, fp);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
/*
* 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 8c3a4c0..4f69687 100644
--- a/vm/mterp/out/InterpC-armv5te-vfp.cpp
+++ b/vm/mterp/out/InterpC-armv5te-vfp.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
diff --git a/vm/mterp/out/InterpC-armv5te.cpp b/vm/mterp/out/InterpC-armv5te.cpp
index 7503ddc..c55f481 100644
--- a/vm/mterp/out/InterpC-armv5te.cpp
+++ b/vm/mterp/out/InterpC-armv5te.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
diff --git a/vm/mterp/out/InterpC-armv7-a-neon.cpp b/vm/mterp/out/InterpC-armv7-a-neon.cpp
index ba9f8a2..18ebfd3 100644
--- a/vm/mterp/out/InterpC-armv7-a-neon.cpp
+++ b/vm/mterp/out/InterpC-armv7-a-neon.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
diff --git a/vm/mterp/out/InterpC-armv7-a.cpp b/vm/mterp/out/InterpC-armv7-a.cpp
index 3c24b7b..e423623 100644
--- a/vm/mterp/out/InterpC-armv7-a.cpp
+++ b/vm/mterp/out/InterpC-armv7-a.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
diff --git a/vm/mterp/out/InterpC-portable.cpp b/vm/mterp/out/InterpC-portable.cpp
index 593a7f7..5bc368f 100644
--- a/vm/mterp/out/InterpC-portable.cpp
+++ b/vm/mterp/out/InterpC-portable.cpp
@@ -403,7 +403,8 @@
*/
#define PC_FP_TO_SELF() \
self->interpSave.pc = pc; \
- self->interpSave.fp = fp;
+ self->interpSave.curFrame = fp;
+#define PC_TO_SELF() self->interpSave.pc = pc;
/*
* Instruction framing. For a switch-oriented implementation this is
@@ -1232,7 +1233,7 @@
void dvmInterpretPortable(Thread* self)
{
#if defined(EASY_GDB)
- StackSaveArea* debugSaveArea = SAVEAREA_FROM_FP(self->curFrame);
+ StackSaveArea* debugSaveArea = SAVEAREA_FROM_FP(self->interpSave.curFrame);
#endif
#if defined(WITH_TRACKREF_CHECKS)
int debugTrackedRefStart = self->interpSave.debugTrackedRefStart;
@@ -1260,7 +1261,7 @@
/* copy state in */
curMethod = self->interpSave.method;
pc = self->interpSave.pc;
- fp = self->interpSave.fp;
+ fp = self->interpSave.curFrame;
retval = self->retval; /* only need for kInterpEntryReturn? */
methodClassDex = curMethod->clazz->pDvmDex;
@@ -1285,7 +1286,7 @@
if (self->debugIsMethodEntry) {
ILOGD("|-- Now interpreting %s.%s", curMethod->clazz->descriptor,
curMethod->name);
- DUMP_REGS(curMethod, self->interpSave.fp, false);
+ DUMP_REGS(curMethod, self->interpSave.curFrame, false);
}
#endif
@@ -5012,7 +5013,7 @@
}
/* update thread FP, and reset local variables */
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -5149,10 +5150,10 @@
#endif
/*
- * Adjust local variables to match self->curFrame and the
+ * Adjust local variables to match self->interpSave.curFrame and the
* updated PC.
*/
- //fp = (u4*) self->curFrame;
+ //fp = (u4*) self->interpSave.curFrame;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -5331,7 +5332,7 @@
* calls. For native calls, we'll mark EXIT on return.
* For non-native calls, EXIT is marked in the RETURN op.
*/
- PC_FP_TO_SELF();
+ PC_TO_SELF();
dvmReportInvoke(self, methodToCall);
}
@@ -5344,7 +5345,7 @@
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->curFrame = fp = newFp;
+ self->interpSave.curFrame = fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -5357,13 +5358,12 @@
/* set this up for JNI locals, even if not a JNI native */
newSaveArea->xtra.localRefCookie = self->jniLocalRefTable.segmentState.all;
- self->curFrame = newFp;
+ self->interpSave.curFrame = newFp;
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPreNativeInvoke(methodToCall, self);
+ dvmReportPreNativeInvoke(methodToCall, self, fp);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -5377,13 +5377,12 @@
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPostNativeInvoke(methodToCall, self);
+ dvmReportPostNativeInvoke(methodToCall, self, fp);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
/*
* 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 5483b84..f91c1f8 100644
--- a/vm/mterp/out/InterpC-x86-atom.cpp
+++ b/vm/mterp/out/InterpC-x86-atom.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
@@ -2142,7 +2143,7 @@
}
/* update thread FP, and reset local variables */
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -2279,10 +2280,10 @@
#endif
/*
- * Adjust local variables to match self->curFrame and the
+ * Adjust local variables to match self->interpSave.curFrame and the
* updated PC.
*/
- //fp = (u4*) self->curFrame;
+ //fp = (u4*) self->interpSave.curFrame;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -2461,7 +2462,7 @@
* calls. For native calls, we'll mark EXIT on return.
* For non-native calls, EXIT is marked in the RETURN op.
*/
- PC_FP_TO_SELF();
+ PC_TO_SELF();
dvmReportInvoke(self, methodToCall);
}
@@ -2474,7 +2475,7 @@
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->curFrame = fp = newFp;
+ self->interpSave.curFrame = fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -2487,13 +2488,12 @@
/* set this up for JNI locals, even if not a JNI native */
newSaveArea->xtra.localRefCookie = self->jniLocalRefTable.segmentState.all;
- self->curFrame = newFp;
+ self->interpSave.curFrame = newFp;
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPreNativeInvoke(methodToCall, self);
+ dvmReportPreNativeInvoke(methodToCall, self, fp);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -2507,13 +2507,12 @@
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPostNativeInvoke(methodToCall, self);
+ dvmReportPostNativeInvoke(methodToCall, self, fp);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
/*
* 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 ce4435b..1f8d9f2 100644
--- a/vm/mterp/out/InterpC-x86.cpp
+++ b/vm/mterp/out/InterpC-x86.cpp
@@ -406,7 +406,7 @@
*/
#define retval self->retval
#define pc self->interpSave.pc
-#define fp self->interpSave.fp
+#define fp self->interpSave.curFrame
#define curMethod self->interpSave.method
#define methodClassDex self->interpSave.methodClassDex
#define debugTrackedRefStart self->interpSave.debugTrackedRefStart
@@ -426,6 +426,7 @@
* the interpSave vars directly, so this is a nop for stubs.
*/
#define PC_FP_TO_SELF()
+#define PC_TO_SELF()
/*
* Opcode handler framing macros. Here, each opcode is a separate function
@@ -2084,7 +2085,7 @@
}
/* update thread FP, and reset local variables */
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -2221,10 +2222,10 @@
#endif
/*
- * Adjust local variables to match self->curFrame and the
+ * Adjust local variables to match self->interpSave.curFrame and the
* updated PC.
*/
- //fp = (u4*) self->curFrame;
+ //fp = (u4*) self->interpSave.curFrame;
curMethod = SAVEAREA_FROM_FP(fp)->method;
self->interpSave.method = curMethod;
//methodClass = curMethod->clazz;
@@ -2403,7 +2404,7 @@
* calls. For native calls, we'll mark EXIT on return.
* For non-native calls, EXIT is marked in the RETURN op.
*/
- PC_FP_TO_SELF();
+ PC_TO_SELF();
dvmReportInvoke(self, methodToCall);
}
@@ -2416,7 +2417,7 @@
self->interpSave.method = curMethod;
methodClassDex = curMethod->clazz->pDvmDex;
pc = methodToCall->insns;
- self->curFrame = fp = newFp;
+ self->interpSave.curFrame = fp = newFp;
#ifdef EASY_GDB
debugSaveArea = SAVEAREA_FROM_FP(newFp);
#endif
@@ -2429,13 +2430,12 @@
/* set this up for JNI locals, even if not a JNI native */
newSaveArea->xtra.localRefCookie = self->jniLocalRefTable.segmentState.all;
- self->curFrame = newFp;
+ self->interpSave.curFrame = newFp;
DUMP_REGS(methodToCall, newFp, true); // show input args
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPreNativeInvoke(methodToCall, self);
+ dvmReportPreNativeInvoke(methodToCall, self, fp);
}
ILOGD("> native <-- %s.%s %s", methodToCall->clazz->descriptor,
@@ -2449,13 +2449,12 @@
(*methodToCall->nativeFunc)(newFp, &retval, methodToCall, self);
if (self->interpBreak.ctl.subMode != 0) {
- PC_FP_TO_SELF();
- dvmReportPostNativeInvoke(methodToCall, self);
+ dvmReportPostNativeInvoke(methodToCall, self, fp);
}
/* pop frame off */
dvmPopJniLocals(self, newSaveArea);
- self->curFrame = fp;
+ self->interpSave.curFrame = fp;
/*
* If the native code threw an exception, or interpreted code
diff --git a/vm/mterp/portable/entry.cpp b/vm/mterp/portable/entry.cpp
index 485fa82..dddf136 100644
--- a/vm/mterp/portable/entry.cpp
+++ b/vm/mterp/portable/entry.cpp
@@ -6,7 +6,7 @@
void dvmInterpretPortable(Thread* self)
{
#if defined(EASY_GDB)
- StackSaveArea* debugSaveArea = SAVEAREA_FROM_FP(self->curFrame);
+ StackSaveArea* debugSaveArea = SAVEAREA_FROM_FP(self->interpSave.curFrame);
#endif
#if defined(WITH_TRACKREF_CHECKS)
int debugTrackedRefStart = self->interpSave.debugTrackedRefStart;
@@ -34,7 +34,7 @@
/* copy state in */
curMethod = self->interpSave.method;
pc = self->interpSave.pc;
- fp = self->interpSave.fp;
+ fp = self->interpSave.curFrame;
retval = self->retval; /* only need for kInterpEntryReturn? */
methodClassDex = curMethod->clazz->pDvmDex;
@@ -59,7 +59,7 @@
if (self->debugIsMethodEntry) {
ILOGD("|-- Now interpreting %s.%s", curMethod->clazz->descriptor,
curMethod->name);
- DUMP_REGS(curMethod, self->interpSave.fp, false);
+ DUMP_REGS(curMethod, self->interpSave.curFrame, false);
}
#endif
diff --git a/vm/mterp/portable/stubdefs.cpp b/vm/mterp/portable/stubdefs.cpp
index de9a8e7..57ff35c 100644
--- a/vm/mterp/portable/stubdefs.cpp
+++ b/vm/mterp/portable/stubdefs.cpp
@@ -21,7 +21,8 @@
*/
#define PC_FP_TO_SELF() \
self->interpSave.pc = pc; \
- self->interpSave.fp = fp;
+ self->interpSave.curFrame = fp;
+#define PC_TO_SELF() self->interpSave.pc = pc;
/*
* Instruction framing. For a switch-oriented implementation this is
diff --git a/vm/mterp/x86/entry.S b/vm/mterp/x86/entry.S
index b6f944a..3e2a708 100644
--- a/vm/mterp/x86/entry.S
+++ b/vm/mterp/x86/entry.S
@@ -43,7 +43,7 @@
/* Set up "named" registers */
movl offThread_pc(%ecx),rPC
- movl offThread_fp(%ecx),rFP
+ movl offThread_curFrame(%ecx),rFP
movl offThread_curHandlerTable(%ecx),rIBASE
/* Remember %esp for future "longjmp" */
diff --git a/vm/mterp/x86/footer.S b/vm/mterp/x86/footer.S
index b79d8cf..c9a88c1 100644
--- a/vm/mterp/x86/footer.S
+++ b/vm/mterp/x86/footer.S
@@ -393,7 +393,7 @@
movl offMethod_insns(%eax), rPC # rPC<- methodToCall->insns
movl $$1, offThread_debugIsMethodEntry(%ecx)
movl LOCAL1_OFFSET(%ebp), rFP # rFP<- newFP
- movl rFP, offThread_curFrame(%ecx) # self->curFrame<- newFP
+ movl rFP, offThread_curFrame(%ecx) # curFrame<-newFP
movl offThread_curHandlerTable(%ecx),rIBASE
FETCH_INST
GOTO_NEXT # jump to methodToCall->insns
@@ -408,7 +408,6 @@
SPILL_TMP1(%eax) # preserve methodToCall
SPILL_TMP2(%edx) # preserve newSaveArea
movl rPC, offThread_pc(%ecx) # update interpSave.pc
- movl rFP, offThread_fp(%ecx) # update interpSave.fp
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
call dvmReportInvoke # (self, method)
@@ -427,7 +426,7 @@
movl rINST, offStackSaveArea_localRefCookie(%edx) # newSaveArea->localRefCookie<- top
movl %edx, LOCAL2_OFFSET(%ebp) # save newSaveArea
movl LOCAL1_OFFSET(%ebp), rINST # rINST<- newFP
- movl rINST, offThread_curFrame(%ecx) # self->curFrame<- newFP
+ movl rINST, offThread_curFrame(%ecx) # curFrame<- newFP
cmpb $$0, offThread_subMode(%ecx) # Anything special going on?
jne 11f # yes - handle it
movl %ecx, OUT_ARG3(%esp) # push parameter self
@@ -441,7 +440,7 @@
movl rSELF, %eax # %eax<- self
movl offStackSaveArea_localRefCookie(%ecx), %edx # %edx<- old top
cmp $$0, offThread_exception(%eax) # check for exception
- movl rFP, offThread_curFrame(%eax) # self->curFrame<- rFP
+ movl rFP, offThread_curFrame(%eax) # curFrame<- rFP
movl %edx, offThread_jniLocal_topCookie(%eax) # new top <- old top
jne common_exceptionThrown # handle exception
movl offThread_curHandlerTable(%eax),rIBASE
@@ -456,10 +455,10 @@
*/
SPILL_TMP1(%eax) # save methodTocall
movl rPC, offThread_pc(%ecx)
- movl rFP, offThread_fp(%ecx)
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
- call dvmReportPreNativeInvoke # (self, methodToCall)
+ movl rFP, OUT_ARG2(%esp)
+ call dvmReportPreNativeInvoke # (self, methodToCall, fp)
UNSPILL_TMP1(%eax) # restore methodToCall
movl rSELF,%ecx # restore self
@@ -475,7 +474,8 @@
movl rSELF, %ecx
movl %ecx, OUT_ARG0(%esp)
movl %eax, OUT_ARG1(%esp)
- call dvmReportPostNativeInvoke # (self, methodToCall)
+ movl rFP, OUT_ARG2(%esp)
+ call dvmReportPostNativeInvoke # (self, methodToCall, fp)
jmp 7b # rejoin
.LstackOverflow: # eax=methodToCall
@@ -502,7 +502,7 @@
movl offStackSaveArea_savedPc(%eax),rPC # pc<- saveArea->savedPC
movl rINST,offThread_method(%ecx) # self->method = newSave->meethod
- movl rFP,offThread_curFrame(%ecx) # self->curFrame = fp
+ movl rFP,offThread_curFrame(%ecx) # curFrame = fp
movl offMethod_clazz(rINST),%eax # eax<- method->clazz
movl offThread_curHandlerTable(%ecx),rIBASE
movl offClassObject_pDvmDex(%eax),rINST # rINST<- method->clazz->pDvmDex
@@ -516,7 +516,7 @@
* Handle special subMode actions
* On entry, rFP: prevFP, %ecx: self, %eax: saveArea
*/
- movl rFP, offThread_fp(%ecx) # update interpSave.fp
+ movl rFP, offThread_curFrame(%ecx) # update interpSave.curFrame
movl rPC, offThread_pc(%ecx) # update interpSave.pc
movl %ecx, OUT_ARG0(%esp) # parameter self
call dvmReportReturn # (self)
@@ -537,7 +537,7 @@
*/
common_gotoBail:
movl rPC,offThread_pc(%ecx) # export state to self
- movl rFP,offThread_fp(%ecx)
+ movl rFP,offThread_curFrame(%ecx)
movl %ecx,OUT_ARG0(%esp) # self in arg0
movl rINST,OUT_ARG1(%esp) # changeInterp in arg1
call dvmMterpStdBail # bail out....
@@ -550,7 +550,7 @@
common_resumeAfterGlueCall:
movl rSELF, %eax
movl offThread_pc(%eax),rPC
- movl offThread_fp(%eax),rFP
+ movl offThread_curFrame(%eax),rFP
movl offThread_curHandlerTable(%eax),rIBASE
FETCH_INST
GOTO_NEXT
@@ -625,7 +625,7 @@
common_exceptionThrown:
movl rSELF,%ecx
movl rPC,offThread_pc(%ecx)
- movl rFP,offThread_fp(%ecx)
+ movl rFP,offThread_curFrame(%ecx)
movl %ecx,OUT_ARG0(%esp)
call dvmMterp_exceptionThrown
jmp common_resumeAfterGlueCall
diff --git a/vm/mterp/x86/header.S b/vm/mterp/x86/header.S
index 0a34a6f..6f3be0c 100644
--- a/vm/mterp/x86/header.S
+++ b/vm/mterp/x86/header.S
@@ -123,13 +123,13 @@
.macro SAVE_PC_FP_TO_SELF _reg
movl rSELF,\_reg
movl rPC,offThread_pc(\_reg)
- movl rFP,offThread_fp(\_reg)
+ movl rFP,offThread_curFrame(\_reg)
.endm
.macro LOAD_PC_FP_FROM_SELF
movl rSELF,rFP
movl offThread_pc(rFP),rPC
- movl offThread_fp(rFP),rFP
+ movl offThread_curFrame(rFP),rFP
.endm
/* The interpreter assumes a properly aligned stack on entry, and