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

Side by Side Diff: src/cfg.cc

Issue 165124: Rename: ExpressionBuilder => ExpressionCfgBuilder, StatementBuilder =>... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/cfg.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 } 68 }
69 if (fun->scope()->arguments() != NULL) { 69 if (fun->scope()->arguments() != NULL) {
70 BAILOUT("function uses .arguments"); 70 BAILOUT("function uses .arguments");
71 } 71 }
72 72
73 ZoneList<Statement*>* body = fun->body(); 73 ZoneList<Statement*>* body = fun->body();
74 if (body->is_empty()) { 74 if (body->is_empty()) {
75 BAILOUT("empty function body"); 75 BAILOUT("empty function body");
76 } 76 }
77 77
78 StatementBuilder builder; 78 StatementCfgBuilder builder;
79 builder.VisitStatements(body); 79 builder.VisitStatements(body);
80 Cfg* graph = builder.graph(); 80 Cfg* graph = builder.graph();
81 if (graph == NULL) { 81 if (graph == NULL) {
82 BAILOUT("unsupported statement type"); 82 BAILOUT("unsupported statement type");
83 } 83 }
84 if (graph->is_empty()) { 84 if (graph->is_empty()) {
85 BAILOUT("function body produces empty cfg"); 85 BAILOUT("function body produces empty cfg");
86 } 86 }
87 if (graph->has_exit()) { 87 if (graph->has_exit()) {
88 BAILOUT("control path without explicit return"); 88 BAILOUT("control path without explicit return");
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 ASSERT(temp->where() == TempLocation::NOT_ALLOCATED); 224 ASSERT(temp->where() == TempLocation::NOT_ALLOCATED);
225 if (temp == value_) { 225 if (temp == value_) {
226 temp->set_where(TempLocation::ACCUMULATOR); 226 temp->set_where(TempLocation::ACCUMULATOR);
227 } else { 227 } else {
228 temp->set_where(TempLocation::STACK); 228 temp->set_where(TempLocation::STACK);
229 } 229 }
230 } 230 }
231 231
232 232
233 // The expression builder should not be used for declarations or statements. 233 // The expression builder should not be used for declarations or statements.
234 void ExpressionBuilder::VisitDeclaration(Declaration* decl) { UNREACHABLE(); } 234 void ExpressionCfgBuilder::VisitDeclaration(Declaration* decl) {
235 UNREACHABLE();
236 }
235 237
236 #define DEFINE_VISIT(type) \ 238 #define DEFINE_VISIT(type) \
237 void ExpressionBuilder::Visit##type(type* stmt) { UNREACHABLE(); } 239 void ExpressionCfgBuilder::Visit##type(type* stmt) { UNREACHABLE(); }
238 STATEMENT_NODE_LIST(DEFINE_VISIT) 240 STATEMENT_NODE_LIST(DEFINE_VISIT)
239 #undef DEFINE_VISIT 241 #undef DEFINE_VISIT
240 242
241 243
242 // Macros (temporarily) handling unsupported expression types. 244 // Macros (temporarily) handling unsupported expression types.
243 #define BAILOUT(reason) \ 245 #define BAILOUT(reason) \
244 do { \ 246 do { \
245 graph_ = NULL; \ 247 graph_ = NULL; \
246 return; \ 248 return; \
247 } while (false) 249 } while (false)
248 250
249 void ExpressionBuilder::VisitFunctionLiteral(FunctionLiteral* expr) { 251 void ExpressionCfgBuilder::VisitFunctionLiteral(FunctionLiteral* expr) {
250 BAILOUT("FunctionLiteral"); 252 BAILOUT("FunctionLiteral");
251 } 253 }
252 254
253 255
254 void ExpressionBuilder::VisitFunctionBoilerplateLiteral( 256 void ExpressionCfgBuilder::VisitFunctionBoilerplateLiteral(
255 FunctionBoilerplateLiteral* expr) { 257 FunctionBoilerplateLiteral* expr) {
256 BAILOUT("FunctionBoilerplateLiteral"); 258 BAILOUT("FunctionBoilerplateLiteral");
257 } 259 }
258 260
259 261
260 void ExpressionBuilder::VisitConditional(Conditional* expr) { 262 void ExpressionCfgBuilder::VisitConditional(Conditional* expr) {
261 BAILOUT("Conditional"); 263 BAILOUT("Conditional");
262 } 264 }
263 265
264 266
265 void ExpressionBuilder::VisitSlot(Slot* expr) { 267 void ExpressionCfgBuilder::VisitSlot(Slot* expr) {
266 BAILOUT("Slot"); 268 BAILOUT("Slot");
267 } 269 }
268 270
269 271
270 void ExpressionBuilder::VisitVariableProxy(VariableProxy* expr) { 272 void ExpressionCfgBuilder::VisitVariableProxy(VariableProxy* expr) {
271 Expression* rewrite = expr->var()->rewrite(); 273 Expression* rewrite = expr->var()->rewrite();
272 if (rewrite == NULL || rewrite->AsSlot() == NULL) { 274 if (rewrite == NULL || rewrite->AsSlot() == NULL) {
273 BAILOUT("unsupported variable (not a slot)"); 275 BAILOUT("unsupported variable (not a slot)");
274 } 276 }
275 Slot* slot = rewrite->AsSlot(); 277 Slot* slot = rewrite->AsSlot();
276 if (slot->type() != Slot::PARAMETER && slot->type() != Slot::LOCAL) { 278 if (slot->type() != Slot::PARAMETER && slot->type() != Slot::LOCAL) {
277 BAILOUT("unsupported slot type (not a parameter or local)"); 279 BAILOUT("unsupported slot type (not a parameter or local)");
278 } 280 }
279 // Ignore the passed destination. 281 // Ignore the passed destination.
280 value_ = new SlotLocation(slot->type(), slot->index()); 282 value_ = new SlotLocation(slot->type(), slot->index());
281 } 283 }
282 284
283 285
284 void ExpressionBuilder::VisitLiteral(Literal* expr) { 286 void ExpressionCfgBuilder::VisitLiteral(Literal* expr) {
285 // Ignore the passed destination. 287 // Ignore the passed destination.
286 value_ = new Constant(expr->handle()); 288 value_ = new Constant(expr->handle());
287 } 289 }
288 290
289 291
290 void ExpressionBuilder::VisitRegExpLiteral(RegExpLiteral* expr) { 292 void ExpressionCfgBuilder::VisitRegExpLiteral(RegExpLiteral* expr) {
291 BAILOUT("RegExpLiteral"); 293 BAILOUT("RegExpLiteral");
292 } 294 }
293 295
294 296
295 void ExpressionBuilder::VisitObjectLiteral(ObjectLiteral* expr) { 297 void ExpressionCfgBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
296 BAILOUT("ObjectLiteral"); 298 BAILOUT("ObjectLiteral");
297 } 299 }
298 300
299 301
300 void ExpressionBuilder::VisitArrayLiteral(ArrayLiteral* expr) { 302 void ExpressionCfgBuilder::VisitArrayLiteral(ArrayLiteral* expr) {
301 BAILOUT("ArrayLiteral"); 303 BAILOUT("ArrayLiteral");
302 } 304 }
303 305
304 306
305 void ExpressionBuilder::VisitCatchExtensionObject(CatchExtensionObject* expr) { 307 void ExpressionCfgBuilder::VisitCatchExtensionObject(
308 CatchExtensionObject* expr) {
306 BAILOUT("CatchExtensionObject"); 309 BAILOUT("CatchExtensionObject");
307 } 310 }
308 311
309 312
310 void ExpressionBuilder::VisitAssignment(Assignment* expr) { 313 void ExpressionCfgBuilder::VisitAssignment(Assignment* expr) {
311 if (expr->op() != Token::ASSIGN && expr->op() != Token::INIT_VAR) { 314 if (expr->op() != Token::ASSIGN && expr->op() != Token::INIT_VAR) {
312 BAILOUT("unsupported compound assignment"); 315 BAILOUT("unsupported compound assignment");
313 } 316 }
314 Expression* lhs = expr->target(); 317 Expression* lhs = expr->target();
315 if (lhs->AsProperty() != NULL) { 318 if (lhs->AsProperty() != NULL) {
316 BAILOUT("unsupported property assignment"); 319 BAILOUT("unsupported property assignment");
317 } 320 }
318 Variable* var = lhs->AsVariableProxy()->AsVariable(); 321 Variable* var = lhs->AsVariableProxy()->AsVariable();
319 if (var == NULL) { 322 if (var == NULL) {
320 BAILOUT("unsupported invalid left-hand side"); 323 BAILOUT("unsupported invalid left-hand side");
321 } 324 }
322 if (var->is_global()) { 325 if (var->is_global()) {
323 BAILOUT("unsupported global variable"); 326 BAILOUT("unsupported global variable");
324 } 327 }
325 Slot* slot = var->slot(); 328 Slot* slot = var->slot();
326 ASSERT(slot != NULL); 329 ASSERT(slot != NULL);
327 if (slot->type() != Slot::PARAMETER && slot->type() != Slot::LOCAL) { 330 if (slot->type() != Slot::PARAMETER && slot->type() != Slot::LOCAL) {
328 BAILOUT("unsupported slot lhs (not a parameter or local)"); 331 BAILOUT("unsupported slot lhs (not a parameter or local)");
329 } 332 }
330 333
331 ExpressionBuilder builder; 334 ExpressionCfgBuilder builder;
332 SlotLocation* loc = new SlotLocation(slot->type(), slot->index()); 335 SlotLocation* loc = new SlotLocation(slot->type(), slot->index());
333 builder.Build(expr->value(), loc); 336 builder.Build(expr->value(), loc);
334 if (builder.graph() == NULL) { 337 if (builder.graph() == NULL) {
335 BAILOUT("unsupported expression in assignment"); 338 BAILOUT("unsupported expression in assignment");
336 } 339 }
337 // If the expression did not come back in the slot location, append 340 // If the expression did not come back in the slot location, append
338 // a move to the CFG. 341 // a move to the CFG.
339 graph_ = builder.graph(); 342 graph_ = builder.graph();
340 if (builder.value() != loc) { 343 if (builder.value() != loc) {
341 graph()->Append(new MoveInstr(loc, builder.value())); 344 graph()->Append(new MoveInstr(loc, builder.value()));
342 } 345 }
343 // Record the assignment. 346 // Record the assignment.
344 assigned_vars_.AddElement(loc); 347 assigned_vars_.AddElement(loc);
345 // Ignore the destination passed to us. 348 // Ignore the destination passed to us.
346 value_ = loc; 349 value_ = loc;
347 } 350 }
348 351
349 352
350 void ExpressionBuilder::VisitThrow(Throw* expr) { 353 void ExpressionCfgBuilder::VisitThrow(Throw* expr) {
351 BAILOUT("Throw"); 354 BAILOUT("Throw");
352 } 355 }
353 356
354 357
355 void ExpressionBuilder::VisitProperty(Property* expr) { 358 void ExpressionCfgBuilder::VisitProperty(Property* expr) {
356 BAILOUT("Property"); 359 BAILOUT("Property");
357 } 360 }
358 361
359 362
360 void ExpressionBuilder::VisitCall(Call* expr) { 363 void ExpressionCfgBuilder::VisitCall(Call* expr) {
361 BAILOUT("Call"); 364 BAILOUT("Call");
362 } 365 }
363 366
364 367
365 void ExpressionBuilder::VisitCallEval(CallEval* expr) { 368 void ExpressionCfgBuilder::VisitCallEval(CallEval* expr) {
366 BAILOUT("CallEval"); 369 BAILOUT("CallEval");
367 } 370 }
368 371
369 372
370 void ExpressionBuilder::VisitCallNew(CallNew* expr) { 373 void ExpressionCfgBuilder::VisitCallNew(CallNew* expr) {
371 BAILOUT("CallNew"); 374 BAILOUT("CallNew");
372 } 375 }
373 376
374 377
375 void ExpressionBuilder::VisitCallRuntime(CallRuntime* expr) { 378 void ExpressionCfgBuilder::VisitCallRuntime(CallRuntime* expr) {
376 BAILOUT("CallRuntime"); 379 BAILOUT("CallRuntime");
377 } 380 }
378 381
379 382
380 void ExpressionBuilder::VisitUnaryOperation(UnaryOperation* expr) { 383 void ExpressionCfgBuilder::VisitUnaryOperation(UnaryOperation* expr) {
381 BAILOUT("UnaryOperation"); 384 BAILOUT("UnaryOperation");
382 } 385 }
383 386
384 387
385 void ExpressionBuilder::VisitCountOperation(CountOperation* expr) { 388 void ExpressionCfgBuilder::VisitCountOperation(CountOperation* expr) {
386 BAILOUT("CountOperation"); 389 BAILOUT("CountOperation");
387 } 390 }
388 391
389 392
390 void ExpressionBuilder::VisitBinaryOperation(BinaryOperation* expr) { 393 void ExpressionCfgBuilder::VisitBinaryOperation(BinaryOperation* expr) {
391 Token::Value op = expr->op(); 394 Token::Value op = expr->op();
392 switch (op) { 395 switch (op) {
393 case Token::COMMA: 396 case Token::COMMA:
394 case Token::OR: 397 case Token::OR:
395 case Token::AND: 398 case Token::AND:
396 BAILOUT("unsupported binary operation"); 399 BAILOUT("unsupported binary operation");
397 400
398 case Token::BIT_OR: 401 case Token::BIT_OR:
399 case Token::BIT_XOR: 402 case Token::BIT_XOR:
400 case Token::BIT_AND: 403 case Token::BIT_AND:
401 case Token::SHL: 404 case Token::SHL:
402 case Token::SAR: 405 case Token::SAR:
403 case Token::SHR: 406 case Token::SHR:
404 case Token::ADD: 407 case Token::ADD:
405 case Token::SUB: 408 case Token::SUB:
406 case Token::MUL: 409 case Token::MUL:
407 case Token::DIV: 410 case Token::DIV:
408 case Token::MOD: { 411 case Token::MOD: {
409 ExpressionBuilder left, right; 412 ExpressionCfgBuilder left, right;
410 left.Build(expr->left(), NULL); 413 left.Build(expr->left(), NULL);
411 if (left.graph() == NULL) { 414 if (left.graph() == NULL) {
412 BAILOUT("unsupported left subexpression in binop"); 415 BAILOUT("unsupported left subexpression in binop");
413 } 416 }
414 right.Build(expr->right(), NULL); 417 right.Build(expr->right(), NULL);
415 if (right.graph() == NULL) { 418 if (right.graph() == NULL) {
416 BAILOUT("unsupported right subexpression in binop"); 419 BAILOUT("unsupported right subexpression in binop");
417 } 420 }
418 421
419 if (destination_ == NULL) destination_ = new TempLocation(); 422 if (destination_ == NULL) destination_ = new TempLocation();
(...skipping 18 matching lines...) Expand all
438 value_ = destination_; 441 value_ = destination_;
439 return; 442 return;
440 } 443 }
441 444
442 default: 445 default:
443 UNREACHABLE(); 446 UNREACHABLE();
444 } 447 }
445 } 448 }
446 449
447 450
448 void ExpressionBuilder::VisitCompareOperation(CompareOperation* expr) { 451 void ExpressionCfgBuilder::VisitCompareOperation(CompareOperation* expr) {
449 BAILOUT("CompareOperation"); 452 BAILOUT("CompareOperation");
450 } 453 }
451 454
452 455
453 void ExpressionBuilder::VisitThisFunction(ThisFunction* expr) { 456 void ExpressionCfgBuilder::VisitThisFunction(ThisFunction* expr) {
454 BAILOUT("ThisFunction"); 457 BAILOUT("ThisFunction");
455 } 458 }
456 459
457 #undef BAILOUT 460 #undef BAILOUT
458 461
459 462
460 // Macros (temporarily) handling unsupported statement types. 463 // Macros (temporarily) handling unsupported statement types.
461 #define BAILOUT(reason) \ 464 #define BAILOUT(reason) \
462 do { \ 465 do { \
463 graph_ = NULL; \ 466 graph_ = NULL; \
464 return; \ 467 return; \
465 } while (false) 468 } while (false)
466 469
467 #define CHECK_BAILOUT() \ 470 #define CHECK_BAILOUT() \
468 if (graph() == NULL) { return; } else {} 471 if (graph() == NULL) { return; } else {}
469 472
470 void StatementBuilder::VisitStatements(ZoneList<Statement*>* stmts) { 473 void StatementCfgBuilder::VisitStatements(ZoneList<Statement*>* stmts) {
471 for (int i = 0, len = stmts->length(); i < len; i++) { 474 for (int i = 0, len = stmts->length(); i < len; i++) {
472 Visit(stmts->at(i)); 475 Visit(stmts->at(i));
473 CHECK_BAILOUT(); 476 CHECK_BAILOUT();
474 if (!graph()->has_exit()) return; 477 if (!graph()->has_exit()) return;
475 } 478 }
476 } 479 }
477 480
478 481
479 // The statement builder should not be used for declarations or expressions. 482 // The statement builder should not be used for declarations or expressions.
480 void StatementBuilder::VisitDeclaration(Declaration* decl) { UNREACHABLE(); } 483 void StatementCfgBuilder::VisitDeclaration(Declaration* decl) { UNREACHABLE(); }
481 484
482 #define DEFINE_VISIT(type) \ 485 #define DEFINE_VISIT(type) \
483 void StatementBuilder::Visit##type(type* expr) { UNREACHABLE(); } 486 void StatementCfgBuilder::Visit##type(type* expr) { UNREACHABLE(); }
484 EXPRESSION_NODE_LIST(DEFINE_VISIT) 487 EXPRESSION_NODE_LIST(DEFINE_VISIT)
485 #undef DEFINE_VISIT 488 #undef DEFINE_VISIT
486 489
487 490
488 void StatementBuilder::VisitBlock(Block* stmt) { 491 void StatementCfgBuilder::VisitBlock(Block* stmt) {
489 VisitStatements(stmt->statements()); 492 VisitStatements(stmt->statements());
490 } 493 }
491 494
492 495
493 void StatementBuilder::VisitExpressionStatement(ExpressionStatement* stmt) { 496 void StatementCfgBuilder::VisitExpressionStatement(ExpressionStatement* stmt) {
494 ExpressionBuilder builder; 497 ExpressionCfgBuilder builder;
495 builder.Build(stmt->expression(), CfgGlobals::current()->nowhere()); 498 builder.Build(stmt->expression(), CfgGlobals::current()->nowhere());
496 if (builder.graph() == NULL) { 499 if (builder.graph() == NULL) {
497 BAILOUT("unsupported expression in expression statement"); 500 BAILOUT("unsupported expression in expression statement");
498 } 501 }
499 graph()->Append(new PositionInstr(stmt->statement_pos())); 502 graph()->Append(new PositionInstr(stmt->statement_pos()));
500 graph()->Concatenate(builder.graph()); 503 graph()->Concatenate(builder.graph());
501 } 504 }
502 505
503 506
504 void StatementBuilder::VisitEmptyStatement(EmptyStatement* stmt) { 507 void StatementCfgBuilder::VisitEmptyStatement(EmptyStatement* stmt) {
505 // Nothing to do. 508 // Nothing to do.
506 } 509 }
507 510
508 511
509 void StatementBuilder::VisitIfStatement(IfStatement* stmt) { 512 void StatementCfgBuilder::VisitIfStatement(IfStatement* stmt) {
510 BAILOUT("IfStatement"); 513 BAILOUT("IfStatement");
511 } 514 }
512 515
513 516
514 void StatementBuilder::VisitContinueStatement(ContinueStatement* stmt) { 517 void StatementCfgBuilder::VisitContinueStatement(ContinueStatement* stmt) {
515 BAILOUT("ContinueStatement"); 518 BAILOUT("ContinueStatement");
516 } 519 }
517 520
518 521
519 void StatementBuilder::VisitBreakStatement(BreakStatement* stmt) { 522 void StatementCfgBuilder::VisitBreakStatement(BreakStatement* stmt) {
520 BAILOUT("BreakStatement"); 523 BAILOUT("BreakStatement");
521 } 524 }
522 525
523 526
524 void StatementBuilder::VisitReturnStatement(ReturnStatement* stmt) { 527 void StatementCfgBuilder::VisitReturnStatement(ReturnStatement* stmt) {
525 ExpressionBuilder builder; 528 ExpressionCfgBuilder builder;
526 builder.Build(stmt->expression(), NULL); 529 builder.Build(stmt->expression(), NULL);
527 if (builder.graph() == NULL) { 530 if (builder.graph() == NULL) {
528 BAILOUT("unsupported expression in return statement"); 531 BAILOUT("unsupported expression in return statement");
529 } 532 }
530 533
531 graph()->Append(new PositionInstr(stmt->statement_pos())); 534 graph()->Append(new PositionInstr(stmt->statement_pos()));
532 graph()->Concatenate(builder.graph()); 535 graph()->Concatenate(builder.graph());
533 graph()->AppendReturnInstruction(builder.value()); 536 graph()->AppendReturnInstruction(builder.value());
534 } 537 }
535 538
536 539
537 void StatementBuilder::VisitWithEnterStatement(WithEnterStatement* stmt) { 540 void StatementCfgBuilder::VisitWithEnterStatement(WithEnterStatement* stmt) {
538 BAILOUT("WithEnterStatement"); 541 BAILOUT("WithEnterStatement");
539 } 542 }
540 543
541 544
542 void StatementBuilder::VisitWithExitStatement(WithExitStatement* stmt) { 545 void StatementCfgBuilder::VisitWithExitStatement(WithExitStatement* stmt) {
543 BAILOUT("WithExitStatement"); 546 BAILOUT("WithExitStatement");
544 } 547 }
545 548
546 549
547 void StatementBuilder::VisitSwitchStatement(SwitchStatement* stmt) { 550 void StatementCfgBuilder::VisitSwitchStatement(SwitchStatement* stmt) {
548 BAILOUT("SwitchStatement"); 551 BAILOUT("SwitchStatement");
549 } 552 }
550 553
551 554
552 void StatementBuilder::VisitLoopStatement(LoopStatement* stmt) { 555 void StatementCfgBuilder::VisitLoopStatement(LoopStatement* stmt) {
553 BAILOUT("LoopStatement"); 556 BAILOUT("LoopStatement");
554 } 557 }
555 558
556 559
557 void StatementBuilder::VisitForInStatement(ForInStatement* stmt) { 560 void StatementCfgBuilder::VisitForInStatement(ForInStatement* stmt) {
558 BAILOUT("ForInStatement"); 561 BAILOUT("ForInStatement");
559 } 562 }
560 563
561 564
562 void StatementBuilder::VisitTryCatch(TryCatch* stmt) { 565 void StatementCfgBuilder::VisitTryCatch(TryCatch* stmt) {
563 BAILOUT("TryCatch"); 566 BAILOUT("TryCatch");
564 } 567 }
565 568
566 569
567 void StatementBuilder::VisitTryFinally(TryFinally* stmt) { 570 void StatementCfgBuilder::VisitTryFinally(TryFinally* stmt) {
568 BAILOUT("TryFinally"); 571 BAILOUT("TryFinally");
569 } 572 }
570 573
571 574
572 void StatementBuilder::VisitDebuggerStatement(DebuggerStatement* stmt) { 575 void StatementCfgBuilder::VisitDebuggerStatement(DebuggerStatement* stmt) {
573 BAILOUT("DebuggerStatement"); 576 BAILOUT("DebuggerStatement");
574 } 577 }
575 578
576 579
577 #ifdef DEBUG 580 #ifdef DEBUG
578 // CFG printing support (via depth-first, preorder block traversal). 581 // CFG printing support (via depth-first, preorder block traversal).
579 582
580 void Cfg::Print() { 583 void Cfg::Print() {
581 entry_->Print(); 584 entry_->Print();
582 entry_->Unmark(); 585 entry_->Unmark();
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 void ExitNode::Print() { 669 void ExitNode::Print() {
667 if (!is_marked_) { 670 if (!is_marked_) {
668 is_marked_ = true; 671 is_marked_ = true;
669 PrintF("L%d:\nExit\n\n", number()); 672 PrintF("L%d:\nExit\n\n", number());
670 } 673 }
671 } 674 }
672 675
673 #endif // DEBUG 676 #endif // DEBUG
674 677
675 } } // namespace v8::internal 678 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/cfg.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698