diff options
| author | 2014-04-16 13:22:37 +0000 | |
|---|---|---|
| committer | 2014-04-16 13:22:38 +0000 | |
| commit | 2faf284e072230d4fd447955fa72ac4d9a3b51a0 (patch) | |
| tree | e306b4c53447ee4b290d0962d0d107df2b0dcc25 /compiler/utils | |
| parent | a3eaf66b968270b938a2795fe55e778c55f1c24b (diff) | |
| parent | 01bc96d007b67fdb7fe349232a83e4b354ce3d08 (diff) | |
Merge "Long support in optimizing compiler."
Diffstat (limited to 'compiler/utils')
| -rw-r--r-- | compiler/utils/managed_register.h | 4 | ||||
| -rw-r--r-- | compiler/utils/x86/managed_register_x86.cc | 3 | ||||
| -rw-r--r-- | compiler/utils/x86/managed_register_x86.h | 9 |
3 files changed, 13 insertions, 3 deletions
diff --git a/compiler/utils/managed_register.h b/compiler/utils/managed_register.h index 06ce3b4514..bfb2829a32 100644 --- a/compiler/utils/managed_register.h +++ b/compiler/utils/managed_register.h @@ -70,11 +70,13 @@ class ManagedRegister { return ManagedRegister(); } + int RegId() const { return id_; } + explicit ManagedRegister(int reg_id) : id_(reg_id) { } + protected: static const int kNoRegister = -1; ManagedRegister() : id_(kNoRegister) { } - explicit ManagedRegister(int reg_id) : id_(reg_id) { } int id_; }; diff --git a/compiler/utils/x86/managed_register_x86.cc b/compiler/utils/x86/managed_register_x86.cc index 7fae7a8b6f..034a795622 100644 --- a/compiler/utils/x86/managed_register_x86.cc +++ b/compiler/utils/x86/managed_register_x86.cc @@ -33,7 +33,8 @@ namespace x86 { P(EDX, EDI) \ P(ECX, EBX) \ P(ECX, EDI) \ - P(EBX, EDI) + P(EBX, EDI) \ + P(ECX, EDX) struct RegisterPairDescriptor { diff --git a/compiler/utils/x86/managed_register_x86.h b/compiler/utils/x86/managed_register_x86.h index 0201a96ad0..09d2b4919d 100644 --- a/compiler/utils/x86/managed_register_x86.h +++ b/compiler/utils/x86/managed_register_x86.h @@ -37,7 +37,8 @@ enum RegisterPair { ECX_EBX = 7, ECX_EDI = 8, EBX_EDI = 9, - kNumberOfRegisterPairs = 10, + ECX_EDX = 10, // Dalvik style passing + kNumberOfRegisterPairs = 11, kNoRegisterPair = -1, }; @@ -121,6 +122,12 @@ class X86ManagedRegister : public ManagedRegister { return FromRegId(AllocIdHigh()).AsCpuRegister(); } + RegisterPair AsRegisterPair() const { + CHECK(IsRegisterPair()); + return static_cast<RegisterPair>(id_ - + (kNumberOfCpuRegIds + kNumberOfXmmRegIds + kNumberOfX87RegIds)); + } + bool IsCpuRegister() const { CHECK(IsValidManagedRegister()); return (0 <= id_) && (id_ < kNumberOfCpuRegIds); |