| 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());
|
| }
|
|
|