Index: src/arm/assembler-arm-inl.h |
diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h |
index acd61feff89711daf952ae3714efc7c88a030545..12bf386695684ba58efa15b7d0daf10be4817d6d 100644 |
--- a/src/arm/assembler-arm-inl.h |
+++ b/src/arm/assembler-arm-inl.h |
@@ -50,10 +50,62 @@ namespace internal { |
int DwVfpRegister::ToAllocationIndex(DwVfpRegister reg) { |
ASSERT(!reg.is(kDoubleRegZero)); |
ASSERT(!reg.is(kScratchDoubleReg)); |
+ if (reg.code() > kDoubleRegZero.code()) |
+ return reg.code() - kNumReservedRegisters; |
return reg.code(); |
} |
+DwVfpRegister DwVfpRegister::FromAllocationIndex(int index) { |
+ ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
+ if (index >= kDoubleRegZero.code()) |
Rodolph Perfetta
2012/12/17 14:38:30
Do we need to assert kScratchDoubleReg.code() - kD
hans
2012/12/17 15:32:46
Good idea! Done.
|
+ return from_code(index + kNumReservedRegisters); |
+ return from_code(index); |
+} |
+ |
+ |
+const char* DwVfpRegister::AllocationIndexToString(int index) { |
+ ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
+ if (index >= kDoubleRegZero.code()) |
+ index += kNumReservedRegisters; |
+ const char* const names[] = { |
+ "d0", |
+ "d1", |
+ "d2", |
+ "d3", |
+ "d4", |
+ "d5", |
+ "d6", |
+ "d7", |
+ "d8", |
+ "d9", |
+ "d10", |
+ "d11", |
+ "d12", |
+ "d13", |
+ "d14", |
+ "d15", |
+ "d16", |
+ "d17", |
+ "d18", |
+ "d19", |
+ "d20", |
+ "d21", |
+ "d22", |
+ "d23", |
+ "d24", |
+ "d25", |
+ "d26", |
+ "d27", |
+ "d28", |
+ "d29", |
+ "d30", |
+ "d31" |
+ }; |
+ return names[index]; |
+} |
+ |
+ |
void RelocInfo::apply(intptr_t delta) { |
if (RelocInfo::IsInternalReference(rmode_)) { |
// absolute code pointer inside code object moves with the code object. |