summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Ian Rogers <irogers@google.com> 2011-10-05 23:39:55 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-10-05 23:39:55 -0700
commitaeac7543ca481bf84922c1f50df75a27f9fb7163 (patch)
tree5289cbc89d27575c34b517ec30cfafd41aeba059 /src
parentad25ac568407ceb14334e8551dd1c4dd0fd6993c (diff)
parent19e53eb4d48c4b90ebe6535295ccec9c225d62c6 (diff)
Merge "Callee-save these ARM registers: R5-R8, R10-R11 and LR." into dalvik-dev
Diffstat (limited to 'src')
-rw-r--r--src/calling_convention_arm.cc39
1 files changed, 8 insertions, 31 deletions
diff --git a/src/calling_convention_arm.cc b/src/calling_convention_arm.cc
index 0a5868bade..e4f7b19fba 100644
--- a/src/calling_convention_arm.cc
+++ b/src/calling_convention_arm.cc
@@ -111,42 +111,19 @@ ArmJniCallingConvention::ArmJniCallingConvention(Method* method) : JniCallingCon
}
}
padding_ = padding;
- if (method->IsSynchronized()) {
- // Preserve callee saves that may be clobbered during monitor enter where
- // we copy across R0 to R3
- if (method->NumArgs() > 0) {
- callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R4));
- if (method->NumArgs() > 1) {
- callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R5));
- if (method->NumArgs() > 2) {
- callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R6));
- if (method->NumArgs() > 3) {
- callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R7));
- }
- }
- }
- }
- }
+
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R5));
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R6));
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R7));
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R8));
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R10));
+ callee_save_regs_.push_back(ArmManagedRegister::FromCoreRegister(R11));
}
uint32_t ArmJniCallingConvention::CoreSpillMask() const {
// Compute spill mask to agree with callee saves initialized in the constructor
uint32_t result = 0;
- Method* method = GetMethod();
- if (method->IsSynchronized()) {
- if (method->NumArgs() > 0) {
- result |= 1 << R4;
- if (method->NumArgs() > 1) {
- result |= 1 << R5;
- if (method->NumArgs() > 2) {
- result |= 1 << R6;
- if (method->NumArgs() > 3) {
- result |= 1 << R7;
- }
- }
- }
- }
- }
+ result = 1 << R5 | 1 << R6 | 1 << R7 | 1 << R8 | 1 << R10 | 1 << R11 | 1 << LR;
return result;
}