Jit: Save/restore callee-save floating point registers at interpreter entry/exit
diff --git a/vm/interp/Interp.c b/vm/interp/Interp.c
index 10b9bb1..2a7476c 100644
--- a/vm/interp/Interp.c
+++ b/vm/interp/Interp.c
@@ -1219,6 +1219,9 @@
InterpState interpState;
bool change;
#if defined(WITH_JIT)
+ /* Target-specific save/restore */
+ extern void dvmJitCalleeSave(double *saveArea);
+ extern void dvmJitCalleeRestore(double *saveArea);
/* Interpreter entry points from compiled code */
extern void dvmJitToInterpNormal();
extern void dvmJitToInterpNoChain();
@@ -1256,6 +1259,7 @@
interpState.debugIsMethodEntry = true;
#endif
#if defined(WITH_JIT)
+ dvmJitCalleeSave(interpState.calleeSave);
interpState.jitState = gDvmJit.pJitEntryTable ? kJitNormal : kJitOff;
/* Setup the Jit-to-interpreter entry points */
@@ -1333,4 +1337,7 @@
}
*pResult = interpState.retval;
+#if defined(WITH_JIT)
+ dvmJitCalleeRestore(interpState.calleeSave);
+#endif
}