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

Side by Side Diff: runtime/vm/il_printer.cc

Issue 215363004: Support for multiple register values (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/il_printer.h" 5 #include "vm/il_printer.h"
6 6
7 #include "vm/intermediate_language.h" 7 #include "vm/intermediate_language.h"
8 #include "vm/os.h" 8 #include "vm/os.h"
9 #include "vm/parser.h" 9 #include "vm/parser.h"
10 10
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 char buffer[1024]; 163 char buffer[1024];
164 BufferFormatter f(buffer, sizeof(buffer)); 164 BufferFormatter f(buffer, sizeof(buffer));
165 PrintICDataHelper(&f, ic_data); 165 PrintICDataHelper(&f, ic_data);
166 OS::Print("%s\n", buffer); 166 OS::Print("%s\n", buffer);
167 } 167 }
168 168
169 169
170 static void PrintUse(BufferFormatter* f, const Definition& definition) { 170 static void PrintUse(BufferFormatter* f, const Definition& definition) {
171 if (definition.is_used()) { 171 if (definition.is_used()) {
172 if (definition.HasSSATemp()) { 172 if (definition.HasSSATemp()) {
173 f->Print("v%" Pd, definition.ssa_temp_index()); 173 if (definition.HasPairRepresentation()) {
174 f->Print("v%" Pd ", v%" Pd "", definition.ssa_temp_index(),
175 definition.ssa_temp_index() + 1);
176 } else {
177 f->Print("v%" Pd "", definition.ssa_temp_index());
178 }
174 } else if (definition.temp_index() != -1) { 179 } else if (definition.temp_index() != -1) {
175 f->Print("t%" Pd, definition.temp_index()); 180 f->Print("t%" Pd "", definition.temp_index());
176 } 181 }
177 } 182 }
178 } 183 }
179 184
180 185
181 const char* Instruction::ToCString() const { 186 const char* Instruction::ToCString() const {
182 char buffer[1024]; 187 char buffer[1024];
183 BufferFormatter f(buffer, sizeof(buffer)); 188 BufferFormatter f(buffer, sizeof(buffer));
184 PrintTo(&f); 189 PrintTo(&f);
185 return Isolate::Current()->current_zone()->MakeCopyOfString(buffer); 190 return Isolate::Current()->current_zone()->MakeCopyOfString(buffer);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 if (type_ != NULL) { 230 if (type_ != NULL) {
226 f->Print(" "); 231 f->Print(" ");
227 type_->PrintTo(f); 232 type_->PrintTo(f);
228 } 233 }
229 } 234 }
230 235
231 236
232 void Definition::PrintOperandsTo(BufferFormatter* f) const { 237 void Definition::PrintOperandsTo(BufferFormatter* f) const {
233 for (int i = 0; i < InputCount(); ++i) { 238 for (int i = 0; i < InputCount(); ++i) {
234 if (i > 0) f->Print(", "); 239 if (i > 0) f->Print(", ");
235 if (InputAt(i) != NULL) InputAt(i)->PrintTo(f); 240 if (InputAt(i) != NULL) {
241 InputAt(i)->PrintTo(f);
242 }
236 } 243 }
237 } 244 }
238 245
239 246
240 void Value::PrintTo(BufferFormatter* f) const { 247 void Value::PrintTo(BufferFormatter* f) const {
241 PrintUse(f, *definition()); 248 PrintUse(f, *definition());
242 if ((reaching_type_ != NULL) && 249 if ((reaching_type_ != NULL) &&
243 (reaching_type_ != definition()->type_)) { 250 (reaching_type_ != definition()->type_)) {
244 f->Print(" "); 251 f->Print(" ");
245 reaching_type_->PrintTo(f); 252 reaching_type_->PrintTo(f);
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 value()->PrintTo(f); 573 value()->PrintTo(f);
567 } 574 }
568 575
569 576
570 void MergedMathInstr::PrintOperandsTo(BufferFormatter* f) const { 577 void MergedMathInstr::PrintOperandsTo(BufferFormatter* f) const {
571 f->Print("'%s', ", MergedMathInstr::KindToCString(kind())); 578 f->Print("'%s', ", MergedMathInstr::KindToCString(kind()));
572 Definition::PrintOperandsTo(f); 579 Definition::PrintOperandsTo(f);
573 } 580 }
574 581
575 582
583 void ExtractNthOutputInstr::PrintOperandsTo(BufferFormatter* f) const {
584 f->Print("Extract %" Pd " from ", index());
585 Definition::PrintOperandsTo(f);
586 }
587
588
576 void BinarySmiOpInstr::PrintTo(BufferFormatter* f) const { 589 void BinarySmiOpInstr::PrintTo(BufferFormatter* f) const {
577 Definition::PrintTo(f); 590 Definition::PrintTo(f);
578 f->Print(" %co", overflow_ ? '+' : '-'); 591 f->Print(" %co", overflow_ ? '+' : '-');
579 f->Print(" %ct", is_truncating() ? '+' : '-'); 592 f->Print(" %ct", is_truncating() ? '+' : '-');
580 } 593 }
581 594
582 595
583 void BinarySmiOpInstr::PrintOperandsTo(BufferFormatter* f) const { 596 void BinarySmiOpInstr::PrintOperandsTo(BufferFormatter* f) const {
584 f->Print("%s, ", Token::Str(op_kind())); 597 f->Print("%s, ", Token::Str(op_kind()));
585 left()->PrintTo(f); 598 left()->PrintTo(f);
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 f->Print(" ["); 1051 f->Print(" [");
1039 locations_[i].PrintTo(f); 1052 locations_[i].PrintTo(f);
1040 f->Print("]"); 1053 f->Print("]");
1041 } 1054 }
1042 } 1055 }
1043 f->Print(" }"); 1056 f->Print(" }");
1044 if (outer_ != NULL) outer_->PrintTo(f); 1057 if (outer_ != NULL) outer_->PrintTo(f);
1045 } 1058 }
1046 1059
1047 } // namespace dart 1060 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698