Chromium Code Reviews| Index: runtime/vm/locations.cc |
| diff --git a/runtime/vm/locations.cc b/runtime/vm/locations.cc |
| index f70f697d2b51c326ba7d543def1e5dfe44bffad7..ba8d24bcbd39d312e940fea7fb6cf5c09d118056 100644 |
| --- a/runtime/vm/locations.cc |
| +++ b/runtime/vm/locations.cc |
| @@ -44,13 +44,19 @@ const char* Location::Name() const { |
| switch (kind()) { |
| case kInvalid: return "?"; |
| case kRegister: return Assembler::RegisterName(reg()); |
| + case kSpillSlot: return "S"; |
| case kUnallocated: |
| switch (policy()) { |
| + case kAny: |
| + return "A"; |
| + case kPrefersRegister: |
| + return "P"; |
| case kRequiresRegister: |
| return "R"; |
| case kSameAsFirstInput: |
| return "0"; |
| } |
| + UNREACHABLE(); |
|
srdjan
2012/07/22 23:27:33
Why not default UNREACHABLE?
Vyacheslav Egorov (Google)
2012/07/23 11:48:39
I prefer compilation error to the runtime error. I
srdjan
2012/07/23 17:02:50
I agree.
|
| default: |
| ASSERT(IsConstant()); |
| return "C"; |
| @@ -59,12 +65,21 @@ const char* Location::Name() const { |
| } |
| +void Location::PrintTo(BufferFormatter* f) const { |
| + if (kind() == kSpillSlot) { |
| + f->Print("S%d", spill_index()); |
| + } else { |
| + f->Print("%s", Name()); |
| + } |
| +} |
| + |
| + |
| void LocationSummary::PrintTo(BufferFormatter* f) const { |
| if (input_count() > 0) { |
| f->Print(" ("); |
| for (intptr_t i = 0; i < input_count(); i++) { |
| if (i != 0) f->Print(", "); |
| - f->Print("%s", in(i).Name()); |
| + in(i).PrintTo(f); |
| } |
| f->Print(")"); |
| } |
| @@ -73,14 +88,14 @@ void LocationSummary::PrintTo(BufferFormatter* f) const { |
| f->Print(" ["); |
| for (intptr_t i = 0; i < temp_count(); i++) { |
| if (i != 0) f->Print(", "); |
| - f->Print("%s", temp(i).Name()); |
| + temp(i).PrintTo(f); |
| } |
| f->Print("]"); |
| } |
| if (!out().IsInvalid()) { |
| f->Print(" => "); |
| - f->Print("%s", out().Name()); |
| + out().PrintTo(f); |
| } |
| if (is_call()) f->Print(" C"); |