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

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

Issue 10908091: Remove classes Computation and BindInstr. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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
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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 if (print_locations_ && (instr->locs() != NULL)) { 68 if (print_locations_ && (instr->locs() != NULL)) {
69 instr->locs()->PrintTo(&f); 69 instr->locs()->PrintTo(&f);
70 } 70 }
71 if (instr->lifetime_position() != -1) { 71 if (instr->lifetime_position() != -1) {
72 OS::Print("%3d: ", instr->lifetime_position()); 72 OS::Print("%3d: ", instr->lifetime_position());
73 } 73 }
74 OS::Print("%s", str); 74 OS::Print("%s", str);
75 } 75 }
76 76
77 77
78 void FlowGraphPrinter::PrintComputation(Computation* comp) {
79 char str[1000];
80 BufferFormatter f(str, sizeof(str));
81 comp->PrintTo(&f);
82 OS::Print("%s", str);
83 }
84
85
86 void FlowGraphPrinter::PrintTypeCheck(const ParsedFunction& parsed_function, 78 void FlowGraphPrinter::PrintTypeCheck(const ParsedFunction& parsed_function,
87 intptr_t token_pos, 79 intptr_t token_pos,
88 Value* value, 80 Value* value,
89 const AbstractType& dst_type, 81 const AbstractType& dst_type,
90 const String& dst_name, 82 const String& dst_name,
91 bool eliminated) { 83 bool eliminated) {
92 const Script& script = Script::Handle(parsed_function.function().script()); 84 const Script& script = Script::Handle(parsed_function.function().script());
93 const char* compile_type_name = "unknown"; 85 const char* compile_type_name = "unknown";
94 if (value != NULL) { 86 if (value != NULL) {
95 const AbstractType& type = AbstractType::Handle(value->CompileType()); 87 const AbstractType& type = AbstractType::Handle(value->CompileType());
(...skipping 27 matching lines...) Expand all
123 } 115 }
124 const Class& cls = 116 const Class& cls =
125 Class::Handle(Isolate::Current()->class_table()->At(class_ids[k])); 117 Class::Handle(Isolate::Current()->class_table()->At(class_ids[k]));
126 f->Print("%s", String::Handle(cls.Name()).ToCString()); 118 f->Print("%s", String::Handle(cls.Name()).ToCString());
127 } 119 }
128 } 120 }
129 f->Print("]"); 121 f->Print("]");
130 } 122 }
131 123
132 124
133 void Computation::PrintTo(BufferFormatter* f) const { 125 void Definition::PrintTo(BufferFormatter* f) const {
134 // Do not access 'deopt_id()' as it asserts that the computation can 126 // Do not access 'deopt_id()' as it asserts that the computation can
135 // deoptimize. 127 // deoptimize.
136 f->Print("%s:%d(", DebugName(), deopt_id_); 128 f->Print("%s:%d(", DebugName(), deopt_id_);
137 PrintOperandsTo(f); 129 PrintOperandsTo(f);
138 f->Print(")"); 130 f->Print(")");
139 } 131 }
140 132
141 133
142 void Computation::PrintOperandsTo(BufferFormatter* f) const { 134 void Definition::PrintOperandsTo(BufferFormatter* f) const {
143 for (int i = 0; i < InputCount(); ++i) { 135 for (int i = 0; i < InputCount(); ++i) {
144 if (i > 0) f->Print(", "); 136 if (i > 0) f->Print(", ");
145 if (InputAt(i) != NULL) InputAt(i)->PrintTo(f); 137 if (InputAt(i) != NULL) InputAt(i)->PrintTo(f);
146 } 138 }
147 } 139 }
148 140
149 141
142 void Definition::PrintToVisualizer(BufferFormatter* f) const {
143 PrintTo(f);
144 }
145
146
150 void Value::PrintTo(BufferFormatter* f) const { 147 void Value::PrintTo(BufferFormatter* f) const {
151 if (definition()->HasSSATemp()) { 148 if (definition()->HasSSATemp()) {
152 f->Print("v%d", definition()->ssa_temp_index()); 149 f->Print("v%d", definition()->ssa_temp_index());
153 } else { 150 } else {
154 f->Print("t%d", definition()->temp_index()); 151 f->Print("t%d", definition()->temp_index());
155 } 152 }
156 } 153 }
157 154
158 155
159 void ConstantComp::PrintOperandsTo(BufferFormatter* f) const { 156 void ConstantInstr::PrintOperandsTo(BufferFormatter* f) const {
160 f->Print("#%s", value().ToCString()); 157 f->Print("#%s", value().ToCString());
161 } 158 }
162 159
163 160
164 void AssertAssignableComp::PrintOperandsTo(BufferFormatter* f) const { 161 void AssertAssignableInstr::PrintOperandsTo(BufferFormatter* f) const {
165 value()->PrintTo(f); 162 value()->PrintTo(f);
166 f->Print(", %s, '%s'%s", 163 f->Print(", %s, '%s'%s",
167 String::Handle(dst_type().Name()).ToCString(), 164 String::Handle(dst_type().Name()).ToCString(),
168 dst_name().ToCString(), 165 dst_name().ToCString(),
169 is_eliminated() ? " eliminated" : ""); 166 is_eliminated() ? " eliminated" : "");
170 f->Print(" instantiator("); 167 f->Print(" instantiator(");
171 instantiator()->PrintTo(f); 168 instantiator()->PrintTo(f);
172 f->Print(")"); 169 f->Print(")");
173 f->Print(" instantiator_type_arguments("); 170 f->Print(" instantiator_type_arguments(");
174 instantiator_type_arguments()->PrintTo(f); 171 instantiator_type_arguments()->PrintTo(f);
175 f->Print(")"); 172 f->Print(")");
176 } 173 }
177 174
178 175
179 void AssertBooleanComp::PrintOperandsTo(BufferFormatter* f) const { 176 void AssertBooleanInstr::PrintOperandsTo(BufferFormatter* f) const {
180 value()->PrintTo(f); 177 value()->PrintTo(f);
181 f->Print("%s", is_eliminated() ? " eliminated" : ""); 178 f->Print("%s", is_eliminated() ? " eliminated" : "");
182 } 179 }
183 180
184 181
185 void ArgumentDefinitionTestComp::PrintOperandsTo(BufferFormatter* f) const { 182 void ArgumentDefinitionTestInstr::PrintOperandsTo(BufferFormatter* f) const {
186 saved_arguments_descriptor()->PrintTo(f); 183 saved_arguments_descriptor()->PrintTo(f);
187 f->Print(", ?%s @%d", 184 f->Print(", ?%s @%d",
188 formal_parameter_name().ToCString(), 185 formal_parameter_name().ToCString(),
189 formal_parameter_index()); 186 formal_parameter_index());
190 } 187 }
191 188
192 189
193 void ClosureCallComp::PrintOperandsTo(BufferFormatter* f) const { 190 void ClosureCallInstr::PrintOperandsTo(BufferFormatter* f) const {
194 for (intptr_t i = 0; i < ArgumentCount(); ++i) { 191 for (intptr_t i = 0; i < ArgumentCount(); ++i) {
195 if (i > 0) f->Print(", "); 192 if (i > 0) f->Print(", ");
196 ArgumentAt(i)->value()->PrintTo(f); 193 ArgumentAt(i)->value()->PrintTo(f);
197 } 194 }
198 } 195 }
199 196
200 197
201 void InstanceCallComp::PrintOperandsTo(BufferFormatter* f) const { 198 void InstanceCallInstr::PrintOperandsTo(BufferFormatter* f) const {
202 f->Print("%s", function_name().ToCString()); 199 f->Print("%s", function_name().ToCString());
203 for (intptr_t i = 0; i < ArgumentCount(); ++i) { 200 for (intptr_t i = 0; i < ArgumentCount(); ++i) {
204 f->Print(", "); 201 f->Print(", ");
205 ArgumentAt(i)->value()->PrintTo(f); 202 ArgumentAt(i)->value()->PrintTo(f);
206 } 203 }
207 if (HasICData()) { 204 if (HasICData()) {
208 PrintICData(f, *ic_data()); 205 PrintICData(f, *ic_data());
209 } 206 }
210 } 207 }
211 208
212 209
213 void PolymorphicInstanceCallComp::PrintTo(BufferFormatter* f) const { 210 void PolymorphicInstanceCallInstr::PrintTo(BufferFormatter* f) const {
214 f->Print("%s(", DebugName()); 211 f->Print("%s(", DebugName());
215 instance_call()->PrintOperandsTo(f); 212 instance_call()->PrintOperandsTo(f);
216 f->Print(") "); 213 f->Print(") ");
217 PrintICData(f, ic_data()); 214 PrintICData(f, ic_data());
218 } 215 }
219 216
220 217
221 void StrictCompareComp::PrintOperandsTo(BufferFormatter* f) const { 218 void StrictCompareInstr::PrintOperandsTo(BufferFormatter* f) const {
222 f->Print("%s, ", Token::Str(kind())); 219 f->Print("%s, ", Token::Str(kind()));
223 left()->PrintTo(f); 220 left()->PrintTo(f);
224 f->Print(", "); 221 f->Print(", ");
225 right()->PrintTo(f); 222 right()->PrintTo(f);
226 } 223 }
227 224
228 225
229 void EqualityCompareComp::PrintOperandsTo(BufferFormatter* f) const { 226 void EqualityCompareInstr::PrintOperandsTo(BufferFormatter* f) const {
230 left()->PrintTo(f); 227 left()->PrintTo(f);
231 f->Print(" %s ", Token::Str(kind())); 228 f->Print(" %s ", Token::Str(kind()));
232 right()->PrintTo(f); 229 right()->PrintTo(f);
233 if (HasICData()) { 230 if (HasICData()) {
234 PrintICData(f, *ic_data()); 231 PrintICData(f, *ic_data());
235 } 232 }
236 } 233 }
237 234
238 235
239 void StaticCallComp::PrintOperandsTo(BufferFormatter* f) const { 236 void StaticCallInstr::PrintOperandsTo(BufferFormatter* f) const {
240 f->Print("%s ", String::Handle(function().name()).ToCString()); 237 f->Print("%s ", String::Handle(function().name()).ToCString());
241 for (intptr_t i = 0; i < ArgumentCount(); ++i) { 238 for (intptr_t i = 0; i < ArgumentCount(); ++i) {
242 if (i > 0) f->Print(", "); 239 if (i > 0) f->Print(", ");
243 ArgumentAt(i)->value()->PrintTo(f); 240 ArgumentAt(i)->value()->PrintTo(f);
244 } 241 }
245 } 242 }
246 243
247 244
248 void LoadLocalComp::PrintOperandsTo(BufferFormatter* f) const { 245 void LoadLocalInstr::PrintOperandsTo(BufferFormatter* f) const {
249 f->Print("%s lvl:%d", local().name().ToCString(), context_level()); 246 f->Print("%s lvl:%d", local().name().ToCString(), context_level());
250 } 247 }
251 248
252 249
253 void StoreLocalComp::PrintOperandsTo(BufferFormatter* f) const { 250 void StoreLocalInstr::PrintOperandsTo(BufferFormatter* f) const {
254 f->Print("%s, ", local().name().ToCString()); 251 f->Print("%s, ", local().name().ToCString());
255 value()->PrintTo(f); 252 value()->PrintTo(f);
256 f->Print(", lvl: %d", context_level()); 253 f->Print(", lvl: %d", context_level());
257 } 254 }
258 255
259 256
260 void NativeCallComp::PrintOperandsTo(BufferFormatter* f) const { 257 void NativeCallInstr::PrintOperandsTo(BufferFormatter* f) const {
261 f->Print("%s", native_name().ToCString()); 258 f->Print("%s", native_name().ToCString());
262 } 259 }
263 260
264 261
265 void LoadInstanceFieldComp::PrintOperandsTo(BufferFormatter* f) const { 262 void LoadInstanceFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
266 f->Print("%s, ", String::Handle(field().name()).ToCString()); 263 f->Print("%s, ", String::Handle(field().name()).ToCString());
267 instance()->PrintTo(f); 264 instance()->PrintTo(f);
268 } 265 }
269 266
270 267
271 void StoreInstanceFieldComp::PrintOperandsTo(BufferFormatter* f) const { 268 void StoreInstanceFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
272 f->Print("%s, ", String::Handle(field().name()).ToCString()); 269 f->Print("%s, ", String::Handle(field().name()).ToCString());
273 instance()->PrintTo(f); 270 instance()->PrintTo(f);
274 f->Print(", "); 271 f->Print(", ");
275 value()->PrintTo(f); 272 value()->PrintTo(f);
276 } 273 }
277 274
278 275
279 void LoadStaticFieldComp::PrintOperandsTo(BufferFormatter* f) const { 276 void LoadStaticFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
280 f->Print("%s", String::Handle(field().name()).ToCString()); 277 f->Print("%s", String::Handle(field().name()).ToCString());
281 } 278 }
282 279
283 280
284 void StoreStaticFieldComp::PrintOperandsTo(BufferFormatter* f) const { 281 void StoreStaticFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
285 f->Print("%s, ", String::Handle(field().name()).ToCString()); 282 f->Print("%s, ", String::Handle(field().name()).ToCString());
286 value()->PrintTo(f); 283 value()->PrintTo(f);
287 } 284 }
288 285
289 286
290 void InstanceOfComp::PrintOperandsTo(BufferFormatter* f) const { 287 void InstanceOfInstr::PrintOperandsTo(BufferFormatter* f) const {
291 value()->PrintTo(f); 288 value()->PrintTo(f);
292 f->Print(" %s %s", 289 f->Print(" %s %s",
293 negate_result() ? "ISNOT" : "IS", 290 negate_result() ? "ISNOT" : "IS",
294 String::Handle(type().Name()).ToCString()); 291 String::Handle(type().Name()).ToCString());
295 f->Print(" instantiator("); 292 f->Print(" instantiator(");
296 instantiator()->PrintTo(f); 293 instantiator()->PrintTo(f);
297 f->Print(")"); 294 f->Print(")");
298 f->Print(" type-arg("); 295 f->Print(" type-arg(");
299 instantiator_type_arguments()->PrintTo(f); 296 instantiator_type_arguments()->PrintTo(f);
300 f->Print(")"); 297 f->Print(")");
301 } 298 }
302 299
303 300
304 void RelationalOpComp::PrintOperandsTo(BufferFormatter* f) const { 301 void RelationalOpInstr::PrintOperandsTo(BufferFormatter* f) const {
305 f->Print("%s, ", Token::Str(kind())); 302 f->Print("%s, ", Token::Str(kind()));
306 left()->PrintTo(f); 303 left()->PrintTo(f);
307 f->Print(", "); 304 f->Print(", ");
308 right()->PrintTo(f); 305 right()->PrintTo(f);
309 if (HasICData()) { 306 if (HasICData()) {
310 PrintICData(f, *ic_data()); 307 PrintICData(f, *ic_data());
311 } 308 }
312 } 309 }
313 310
314 311
315 void AllocateObjectComp::PrintOperandsTo(BufferFormatter* f) const { 312 void AllocateObjectInstr::PrintOperandsTo(BufferFormatter* f) const {
316 f->Print("%s", Class::Handle(constructor().Owner()).ToCString()); 313 f->Print("%s", Class::Handle(constructor().Owner()).ToCString());
317 for (intptr_t i = 0; i < ArgumentCount(); i++) { 314 for (intptr_t i = 0; i < ArgumentCount(); i++) {
318 f->Print(", "); 315 f->Print(", ");
319 ArgumentAt(i)->value()->PrintTo(f); 316 ArgumentAt(i)->value()->PrintTo(f);
320 } 317 }
321 } 318 }
322 319
323 320
324 void AllocateObjectWithBoundsCheckComp::PrintOperandsTo( 321 void AllocateObjectWithBoundsCheckInstr::PrintOperandsTo(
325 BufferFormatter* f) const { 322 BufferFormatter* f) const {
326 f->Print("%s", Class::Handle(constructor().Owner()).ToCString()); 323 f->Print("%s", Class::Handle(constructor().Owner()).ToCString());
327 for (intptr_t i = 0; i < InputCount(); i++) { 324 for (intptr_t i = 0; i < InputCount(); i++) {
328 f->Print(", "); 325 f->Print(", ");
329 InputAt(i)->PrintTo(f); 326 InputAt(i)->PrintTo(f);
330 } 327 }
331 } 328 }
332 329
333 330
334 void CreateArrayComp::PrintOperandsTo(BufferFormatter* f) const { 331 void CreateArrayInstr::PrintOperandsTo(BufferFormatter* f) const {
335 for (int i = 0; i < ArgumentCount(); ++i) { 332 for (int i = 0; i < ArgumentCount(); ++i) {
336 if (i != 0) f->Print(", "); 333 if (i != 0) f->Print(", ");
337 ArgumentAt(i)->value()->PrintTo(f); 334 ArgumentAt(i)->value()->PrintTo(f);
338 } 335 }
339 if (ArgumentCount() > 0) f->Print(", "); 336 if (ArgumentCount() > 0) f->Print(", ");
340 element_type()->PrintTo(f); 337 element_type()->PrintTo(f);
341 } 338 }
342 339
343 340
344 void CreateClosureComp::PrintOperandsTo(BufferFormatter* f) const { 341 void CreateClosureInstr::PrintOperandsTo(BufferFormatter* f) const {
345 f->Print("%s", function().ToCString()); 342 f->Print("%s", function().ToCString());
346 for (intptr_t i = 0; i < ArgumentCount(); ++i) { 343 for (intptr_t i = 0; i < ArgumentCount(); ++i) {
347 if (i > 0) f->Print(", "); 344 if (i > 0) f->Print(", ");
348 ArgumentAt(i)->value()->PrintTo(f); 345 ArgumentAt(i)->value()->PrintTo(f);
349 } 346 }
350 } 347 }
351 348
352 349
353 void LoadVMFieldComp::PrintOperandsTo(BufferFormatter* f) const { 350 void LoadVMFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
354 value()->PrintTo(f); 351 value()->PrintTo(f);
355 f->Print(", %d", offset_in_bytes()); 352 f->Print(", %d", offset_in_bytes());
356 } 353 }
357 354
358 355
359 void StoreVMFieldComp::PrintOperandsTo(BufferFormatter* f) const { 356 void StoreVMFieldInstr::PrintOperandsTo(BufferFormatter* f) const {
360 dest()->PrintTo(f); 357 dest()->PrintTo(f);
361 f->Print(", %d, ", offset_in_bytes()); 358 f->Print(", %d, ", offset_in_bytes());
362 value()->PrintTo(f); 359 value()->PrintTo(f);
363 } 360 }
364 361
365 362
366 void InstantiateTypeArgumentsComp::PrintOperandsTo(BufferFormatter* f) const { 363 void InstantiateTypeArgumentsInstr::PrintOperandsTo(BufferFormatter* f) const {
367 const String& type_args = String::Handle(type_arguments().Name()); 364 const String& type_args = String::Handle(type_arguments().Name());
368 f->Print("%s, ", type_args.ToCString()); 365 f->Print("%s, ", type_args.ToCString());
369 instantiator()->PrintTo(f); 366 instantiator()->PrintTo(f);
370 } 367 }
371 368
372 369
373 void ExtractConstructorTypeArgumentsComp::PrintOperandsTo( 370 void ExtractConstructorTypeArgumentsInstr::PrintOperandsTo(
374 BufferFormatter* f) const { 371 BufferFormatter* f) const {
375 const String& type_args = String::Handle(type_arguments().Name()); 372 const String& type_args = String::Handle(type_arguments().Name());
376 f->Print("%s, ", type_args.ToCString()); 373 f->Print("%s, ", type_args.ToCString());
377 instantiator()->PrintTo(f); 374 instantiator()->PrintTo(f);
378 } 375 }
379 376
380 377
381 void AllocateContextComp::PrintOperandsTo(BufferFormatter* f) const { 378 void AllocateContextInstr::PrintOperandsTo(BufferFormatter* f) const {
382 f->Print("%d", num_context_variables()); 379 f->Print("%d", num_context_variables());
383 } 380 }
384 381
385 382
386 void CatchEntryComp::PrintOperandsTo(BufferFormatter* f) const { 383 void CatchEntryInstr::PrintOperandsTo(BufferFormatter* f) const {
387 f->Print("%s, %s", 384 f->Print("%s, %s",
388 exception_var().name().ToCString(), 385 exception_var().name().ToCString(),
389 stacktrace_var().name().ToCString()); 386 stacktrace_var().name().ToCString());
390 } 387 }
391 388
392 389
393 void BinarySmiOpComp::PrintOperandsTo(BufferFormatter* f) const { 390 void BinarySmiOpInstr::PrintOperandsTo(BufferFormatter* f) const {
394 f->Print("%s, ", Token::Str(op_kind())); 391 f->Print("%s, ", Token::Str(op_kind()));
395 left()->PrintTo(f); 392 left()->PrintTo(f);
396 f->Print(", "); 393 f->Print(", ");
397 right()->PrintTo(f); 394 right()->PrintTo(f);
398 } 395 }
399 396
400 397
401 void BinaryMintOpComp::PrintOperandsTo(BufferFormatter* f) const { 398 void BinaryMintOpInstr::PrintOperandsTo(BufferFormatter* f) const {
402 f->Print("%s, ", Token::Str(op_kind())); 399 f->Print("%s, ", Token::Str(op_kind()));
403 left()->PrintTo(f); 400 left()->PrintTo(f);
404 f->Print(", "); 401 f->Print(", ");
405 right()->PrintTo(f); 402 right()->PrintTo(f);
406 } 403 }
407 404
408 405
409 void UnboxedDoubleBinaryOpComp::PrintOperandsTo(BufferFormatter* f) const { 406 void UnboxedDoubleBinaryOpInstr::PrintOperandsTo(BufferFormatter* f) const {
410 f->Print("%s, ", Token::Str(op_kind())); 407 f->Print("%s, ", Token::Str(op_kind()));
411 left()->PrintTo(f); 408 left()->PrintTo(f);
412 f->Print(", "); 409 f->Print(", ");
413 right()->PrintTo(f); 410 right()->PrintTo(f);
414 } 411 }
415 412
416 413
417 void UnarySmiOpComp::PrintOperandsTo(BufferFormatter* f) const { 414 void UnarySmiOpInstr::PrintOperandsTo(BufferFormatter* f) const {
418 f->Print("%s, ", Token::Str(op_kind())); 415 f->Print("%s, ", Token::Str(op_kind()));
419 value()->PrintTo(f); 416 value()->PrintTo(f);
420 } 417 }
421 418
422 419
423 void CheckClassComp::PrintOperandsTo(BufferFormatter* f) const { 420 void CheckClassInstr::PrintOperandsTo(BufferFormatter* f) const {
424 value()->PrintTo(f); 421 value()->PrintTo(f);
425 PrintICData(f, unary_checks()); 422 PrintICData(f, unary_checks());
426 } 423 }
427 424
428 425
429 void GraphEntryInstr::PrintTo(BufferFormatter* f) const { 426 void GraphEntryInstr::PrintTo(BufferFormatter* f) const {
430 f->Print("%2d: [graph]", block_id()); 427 f->Print("%2d: [graph]", block_id());
431 if (start_env_ != NULL) { 428 if (start_env_ != NULL) {
432 f->Print("\n{\n"); 429 f->Print("\n{\n");
433 const GrowableArray<Value*>& values = start_env_->values(); 430 const GrowableArray<Value*>& values = start_env_->values();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 } else { 496 } else {
500 f->Print("]"); 497 f->Print("]");
501 } 498 }
502 if (HasParallelMove()) { 499 if (HasParallelMove()) {
503 f->Print("\n"); 500 f->Print("\n");
504 parallel_move()->PrintTo(f); 501 parallel_move()->PrintTo(f);
505 } 502 }
506 } 503 }
507 504
508 505
509 void BindInstr::PrintTo(BufferFormatter* f) const {
510 if (!is_used()) {
511 f->Print(" ");
512 } else if (HasSSATemp()) {
513 f->Print(" v%d <- ", ssa_temp_index());
514 } else {
515 f->Print(" t%d <- ", temp_index());
516 }
517 computation()->PrintTo(f);
518 PrintPropagatedType(f, *this);
519 }
520
521
522 void PushArgumentInstr::PrintTo(BufferFormatter* f) const { 506 void PushArgumentInstr::PrintTo(BufferFormatter* f) const {
523 f->Print(" %s ", DebugName()); 507 f->Print(" %s ", DebugName());
524 value()->PrintTo(f); 508 value()->PrintTo(f);
525 } 509 }
526 510
527 511
528 void ReturnInstr::PrintTo(BufferFormatter* f) const { 512 void ReturnInstr::PrintTo(BufferFormatter* f) const {
529 f->Print(" %s:%d ", DebugName(), deopt_id()); 513 f->Print(" %s:%d ", DebugName(), deopt_id());
530 value()->PrintTo(f); 514 value()->PrintTo(f);
531 } 515 }
(...skipping 15 matching lines...) Expand all
547 } else { 531 } else {
548 f->Print(" "); 532 f->Print(" ");
549 } 533 }
550 f->Print(" goto %d", successor()->block_id()); 534 f->Print(" goto %d", successor()->block_id());
551 } 535 }
552 536
553 537
554 void BranchInstr::PrintTo(BufferFormatter* f) const { 538 void BranchInstr::PrintTo(BufferFormatter* f) const {
555 f->Print(" %s ", DebugName()); 539 f->Print(" %s ", DebugName());
556 f->Print("if "); 540 f->Print("if ");
557 computation()->PrintTo(f); 541 comparison()->PrintTo(f);
558 542
559 f->Print(" goto (%d, %d)", 543 f->Print(" goto (%d, %d)",
560 true_successor()->block_id(), 544 true_successor()->block_id(),
561 false_successor()->block_id()); 545 false_successor()->block_id());
562 } 546 }
563 547
564 548
565 void ParallelMoveInstr::PrintTo(BufferFormatter* f) const { 549 void ParallelMoveInstr::PrintTo(BufferFormatter* f) const {
566 f->Print(" %s ", DebugName()); 550 f->Print(" %s ", DebugName());
567 for (intptr_t i = 0; i < moves_.length(); i++) { 551 for (intptr_t i = 0; i < moves_.length(); i++) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 void TargetEntryInstr::PrintToVisualizer(BufferFormatter* f) const { 726 void TargetEntryInstr::PrintToVisualizer(BufferFormatter* f) const {
743 f->Print("_ [target"); 727 f->Print("_ [target");
744 if (IsCatchEntry()) { 728 if (IsCatchEntry()) {
745 f->Print(" catch %d]", catch_try_index()); 729 f->Print(" catch %d]", catch_try_index());
746 } else { 730 } else {
747 f->Print("]"); 731 f->Print("]");
748 } 732 }
749 } 733 }
750 734
751 735
752 void BindInstr::PrintToVisualizer(BufferFormatter* f) const {
753 if (!is_used()) {
754 f->Print("_ ");
755 } else if (HasSSATemp()) {
756 f->Print("v%d ", ssa_temp_index());
757 } else {
758 f->Print("t%d ", temp_index());
759 }
760 computation()->PrintTo(f);
761 }
762
763
764 void PushArgumentInstr::PrintToVisualizer(BufferFormatter* f) const { 736 void PushArgumentInstr::PrintToVisualizer(BufferFormatter* f) const {
765 f->Print("_ %s ", DebugName()); 737 f->Print("_ %s ", DebugName());
766 value()->PrintTo(f); 738 value()->PrintTo(f);
767 } 739 }
768 740
769 741
770 void ReturnInstr::PrintToVisualizer(BufferFormatter* f) const { 742 void ReturnInstr::PrintToVisualizer(BufferFormatter* f) const {
771 f->Print("_ %s:%d ", DebugName(), deopt_id()); 743 f->Print("_ %s:%d ", DebugName(), deopt_id());
772 value()->PrintTo(f); 744 value()->PrintTo(f);
773 } 745 }
(...skipping 10 matching lines...) Expand all
784 756
785 757
786 void GotoInstr::PrintToVisualizer(BufferFormatter* f) const { 758 void GotoInstr::PrintToVisualizer(BufferFormatter* f) const {
787 f->Print("_ goto B%d", successor()->block_id()); 759 f->Print("_ goto B%d", successor()->block_id());
788 } 760 }
789 761
790 762
791 void BranchInstr::PrintToVisualizer(BufferFormatter* f) const { 763 void BranchInstr::PrintToVisualizer(BufferFormatter* f) const {
792 f->Print("_ %s ", DebugName()); 764 f->Print("_ %s ", DebugName());
793 f->Print("if "); 765 f->Print("if ");
794 computation()->PrintTo(f); 766 comparison()->PrintTo(f);
795 f->Print(" goto (B%d, B%d)", 767 f->Print(" goto (B%d, B%d)",
796 true_successor()->block_id(), 768 true_successor()->block_id(),
797 false_successor()->block_id()); 769 false_successor()->block_id());
798 } 770 }
799 771
800 772
801 void ParallelMoveInstr::PrintToVisualizer(BufferFormatter* f) const { 773 void ParallelMoveInstr::PrintToVisualizer(BufferFormatter* f) const {
802 UNIMPLEMENTED(); 774 UNIMPLEMENTED();
803 } 775 }
804 776
805 777
806 void Environment::PrintTo(BufferFormatter* f) const { 778 void Environment::PrintTo(BufferFormatter* f) const {
807 f->Print(" env={ "); 779 f->Print(" env={ ");
808 for (intptr_t i = 0; i < values_.length(); ++i) { 780 for (intptr_t i = 0; i < values_.length(); ++i) {
809 if (i > 0) f->Print(", "); 781 if (i > 0) f->Print(", ");
810 values_[i]->PrintTo(f); 782 values_[i]->PrintTo(f);
811 if ((locations_ != NULL) && !locations_[i].IsInvalid()) { 783 if ((locations_ != NULL) && !locations_[i].IsInvalid()) {
812 f->Print(" ["); 784 f->Print(" [");
813 locations_[i].PrintTo(f); 785 locations_[i].PrintTo(f);
814 f->Print("]"); 786 f->Print("]");
815 } 787 }
816 } 788 }
817 f->Print(" }"); 789 f->Print(" }");
818 } 790 }
819 791
820 } // namespace dart 792 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698