Index: runtime/vm/il_printer.cc |
diff --git a/runtime/vm/il_printer.cc b/runtime/vm/il_printer.cc |
index 90446ca5e3cfed75d5d24f02e6701e888e69aaf8..26168147049ff47da59db977aa5df80ff6c43598 100644 |
--- a/runtime/vm/il_printer.cc |
+++ b/runtime/vm/il_printer.cc |
@@ -242,6 +242,7 @@ void Definition::PrintOperandsTo(BufferFormatter* f) const { |
void Value::PrintTo(BufferFormatter* f) const { |
PrintUse(f, *definition()); |
+ |
if ((reaching_type_ != NULL) && |
(reaching_type_ != definition()->type_)) { |
f->Print(" "); |
@@ -602,6 +603,21 @@ void BinarySmiOpInstr::PrintOperandsTo(BufferFormatter* f) const { |
} |
+void BinaryInt32OpInstr::PrintTo(BufferFormatter* f) const { |
+ Definition::PrintTo(f); |
+ f->Print(" %co", overflow_ ? '+' : '-'); |
+ f->Print(" %ct", IsTruncating() ? '+' : '-'); |
+} |
+ |
+ |
+void BinaryInt32OpInstr::PrintOperandsTo(BufferFormatter* f) const { |
+ f->Print("%s, ", Token::Str(op_kind())); |
+ left()->PrintTo(f); |
+ f->Print(", "); |
+ right()->PrintTo(f); |
+} |
+ |
+ |
void BinaryDoubleOpInstr::PrintOperandsTo(BufferFormatter* f) const { |
f->Print("%s, ", Token::Str(op_kind())); |
left()->PrintTo(f); |
@@ -965,6 +981,39 @@ void JoinEntryInstr::PrintTo(BufferFormatter* f) const { |
} |
+static const char *RepresentationToCString(Representation rep) { |
+ switch (rep) { |
+ case kTagged: |
+ return "tagged"; |
+ case kUntagged: |
+ return "untagged"; |
+ case kUnboxedDouble: |
+ return "double"; |
+ case kUnboxedInt32: |
+ return "int32"; |
+ case kUnboxedUint32: |
+ return "uint32"; |
+ case kUnboxedMint: |
+ return "mint"; |
+ case kUnboxedFloat32x4: |
+ return "float32x4"; |
+ case kUnboxedInt32x4: |
+ return "int32x4"; |
+ case kUnboxedFloat64x2: |
+ return "float64x2"; |
+ case kPairOfTagged: |
+ return "tagged-pair"; |
+ case kPairOfUnboxedDouble: |
+ return "double-pair"; |
+ case kNoRepresentation: |
+ return "none"; |
+ case kNumRepresentations: |
+ UNREACHABLE(); |
+ } |
+ return "?"; |
+} |
+ |
+ |
void PhiInstr::PrintTo(BufferFormatter* f) const { |
f->Print("v%" Pd " <- phi(", ssa_temp_index()); |
for (intptr_t i = 0; i < inputs_.length(); ++i) { |
@@ -981,6 +1030,12 @@ void PhiInstr::PrintTo(BufferFormatter* f) const { |
f->Print(" "); |
range_->PrintTo(f); |
} |
+ |
+ if (representation() != kNoRepresentation && |
+ representation() != kTagged) { |
+ f->Print(" %s", RepresentationToCString(representation())); |
+ } |
+ |
if (type_ != NULL) { |
f->Print(" "); |
type_->PrintTo(f); |
@@ -988,6 +1043,14 @@ void PhiInstr::PrintTo(BufferFormatter* f) const { |
} |
+void UnboxedIntConverterInstr::PrintOperandsTo(BufferFormatter* f) const { |
+ f->Print("%s->%s, ", |
+ RepresentationToCString(from()), |
+ RepresentationToCString(to())); |
+ Definition::PrintOperandsTo(f); |
+} |
+ |
+ |
void ParameterInstr::PrintOperandsTo(BufferFormatter* f) const { |
f->Print("%" Pd, index()); |
} |