Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1547)

Unified Diff: runtime/vm/il_printer.cc

Issue 504143003: Support Int32 representation for selected binary operations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
}

Powered by Google App Engine
This is Rietveld 408576698