Index: runtime/vm/il_printer.cc |
=================================================================== |
--- runtime/vm/il_printer.cc (revision 9640) |
+++ runtime/vm/il_printer.cc (working copy) |
@@ -82,10 +82,35 @@ |
} |
+static void PrintICData(BufferFormatter* f, const ICData& ic_data) { |
+ f->Print(" IC[%d: ", ic_data.NumberOfChecks()); |
+ Function& target = Function::Handle(); |
+ for (intptr_t i = 0; i < ic_data.NumberOfChecks(); i++) { |
+ GrowableArray<intptr_t> class_ids; |
+ ic_data.GetCheckAt(i, &class_ids, &target); |
+ if (i > 0) { |
+ f->Print(" | "); |
+ } |
+ for (intptr_t k = 0; k < class_ids.length(); k++) { |
+ if (k > 0) { |
+ f->Print(", "); |
+ } |
+ const Class& cls = |
+ Class::Handle(Isolate::Current()->class_table()->At(class_ids[k])); |
+ f->Print("%s", String::Handle(cls.Name()).ToCString()); |
+ } |
+ } |
+ f->Print("]"); |
+} |
+ |
+ |
void Computation::PrintTo(BufferFormatter* f) const { |
- f->Print("%s(", DebugName()); |
+ f->Print("%s:%d(", DebugName(), cid()); |
PrintOperandsTo(f); |
f->Print(")"); |
+ if (HasICData()) { |
+ PrintICData(f, *ic_data()); |
+ } |
} |
@@ -146,18 +171,9 @@ |
f->Print("%s(", DebugName()); |
instance_call()->PrintOperandsTo(f); |
f->Print(") "); |
- intptr_t len = HasICData() ? ic_data()->NumberOfChecks() : 0; |
- f->Print("[%d: ", len); |
- for (intptr_t i = 0; i < len; i++) { |
- intptr_t class_id = ic_data()->GetReceiverClassIdAt(i); |
- const Class& cls = |
- Class::Handle(Isolate::Current()->class_table()->At(class_id)); |
- if (i > 0) { |
- f->Print(", "); |
- } |
- f->Print("%s", cls.ToCString()); |
+ if (HasICData()) { |
+ PrintICData(f, *ic_data()); |
} |
- f->Print("]"); |
} |
void StrictCompareComp::PrintOperandsTo(BufferFormatter* f) const { |