summaryrefslogtreecommitdiff
path: root/compiler/jni/quick/calling_convention.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/jni/quick/calling_convention.h')
-rw-r--r--compiler/jni/quick/calling_convention.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/jni/quick/calling_convention.h b/compiler/jni/quick/calling_convention.h
index 21336edb44..b8b4cc14b1 100644
--- a/compiler/jni/quick/calling_convention.h
+++ b/compiler/jni/quick/calling_convention.h
@@ -324,9 +324,11 @@ class JniCallingConvention : public CallingConvention {
virtual ArrayRef<const ManagedRegister> CalleeSaveRegisters() const = 0;
// Subset of core callee save registers that can be used for arbitrary purposes after
- // constructing the JNI transition frame. These should be managed callee-saves as well.
+ // constructing the JNI transition frame. These should be both managed and native callee-saves.
// These should not include special purpose registers such as thread register.
- // JNI compiler currently requires at least 3 callee save scratch registers.
+ // JNI compiler currently requires at least 4 callee save scratch registers, except for x86
+ // where we have only 3 such registers but all args are passed on stack, so the method register
+ // is never clobbered by argument moves and does not need to be preserved elsewhere.
virtual ArrayRef<const ManagedRegister> CalleeSaveScratchRegisters() const = 0;
// Subset of core argument registers that can be used for arbitrary purposes after