Index: src/arm/assembler-arm-inl.h |
diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h |
index 02dc907fcc0ce559deffb2ce73f542e1b9e52f84..c26dded1a76dbfd125791912c35101a5ff954ac7 100644 |
--- a/src/arm/assembler-arm-inl.h |
+++ b/src/arm/assembler-arm-inl.h |
@@ -58,7 +58,7 @@ int Register::NumAllocatableRegisters() { |
int DwVfpRegister::NumRegisters() { |
if (CpuFeatures::IsSupported(VFP2)) { |
- return DwVfpRegister::kNumRegisters; |
+ return CpuFeatures::IsSupported(VFP32DREGS) ? 32 : 16; |
} else { |
return 1; |
} |
@@ -67,7 +67,7 @@ int DwVfpRegister::NumRegisters() { |
int DwVfpRegister::NumAllocatableRegisters() { |
if (CpuFeatures::IsSupported(VFP2)) { |
- return DwVfpRegister::kMaxNumAllocatableRegisters; |
+ return NumRegisters() - kNumReservedRegisters; |
} else { |
return 1; |
} |
@@ -77,10 +77,22 @@ int DwVfpRegister::NumAllocatableRegisters() { |
int DwVfpRegister::ToAllocationIndex(DwVfpRegister reg) { |
ASSERT(!reg.is(kDoubleRegZero)); |
ASSERT(!reg.is(kScratchDoubleReg)); |
+ if (reg.code() > kDoubleRegZero.code()) |
ulan_google
2013/01/18 10:44:42
Nit: brackets are needed around "if" body.
hans
2013/01/22 13:55:40
Done.
|
+ return reg.code() - kNumReservedRegisters; |
return reg.code(); |
} |
+DwVfpRegister DwVfpRegister::FromAllocationIndex(int index) { |
+ ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
+ ASSERT(kScratchDoubleReg.code() - kDoubleRegZero.code() == |
+ kNumReservedRegisters - 1); |
+ if (index >= kDoubleRegZero.code()) |
ulan_google
2013/01/18 10:44:42
Nit: brackets are needed around "if" body.
hans
2013/01/22 13:55:40
Done.
|
+ return from_code(index + kNumReservedRegisters); |
+ return from_code(index); |
+} |
+ |
+ |
void RelocInfo::apply(intptr_t delta) { |
if (RelocInfo::IsInternalReference(rmode_)) { |
// absolute code pointer inside code object moves with the code object. |