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

Side by Side Diff: src/prettyprinter.cc

Issue 3146037: Cleanup the AST code by removing unused parts and get rid of the... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 396
397 void PrettyPrinter::VisitCompareOperation(CompareOperation* node) { 397 void PrettyPrinter::VisitCompareOperation(CompareOperation* node) {
398 Print("("); 398 Print("(");
399 Visit(node->left()); 399 Visit(node->left());
400 Print("%s", Token::String(node->op())); 400 Print("%s", Token::String(node->op()));
401 Visit(node->right()); 401 Visit(node->right());
402 Print(")"); 402 Print(")");
403 } 403 }
404 404
405 405
406 void PrettyPrinter::VisitCompareToNull(CompareToNull* node) {
407 Print("(");
408 Visit(node->expression());
409 Print("%s null)", Token::String(node->op()));
410 }
411
412
406 void PrettyPrinter::VisitThisFunction(ThisFunction* node) { 413 void PrettyPrinter::VisitThisFunction(ThisFunction* node) {
407 Print("<this-function>"); 414 Print("<this-function>");
408 } 415 }
409 416
410 417
411 const char* PrettyPrinter::Print(AstNode* node) { 418 const char* PrettyPrinter::Print(AstNode* node) {
412 Init(); 419 Init();
413 Visit(node); 420 Visit(node);
414 return output_; 421 return output_;
415 } 422 }
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 explicit IndentedScope(const char* txt, AstNode* node = NULL) { 604 explicit IndentedScope(const char* txt, AstNode* node = NULL) {
598 ast_printer_->PrintIndented(txt); 605 ast_printer_->PrintIndented(txt);
599 if (node != NULL && node->AsExpression() != NULL) { 606 if (node != NULL && node->AsExpression() != NULL) {
600 Expression* expr = node->AsExpression(); 607 Expression* expr = node->AsExpression();
601 bool printed_first = false; 608 bool printed_first = false;
602 if ((expr->type() != NULL) && (expr->type()->IsKnown())) { 609 if ((expr->type() != NULL) && (expr->type()->IsKnown())) {
603 ast_printer_->Print(" (type = "); 610 ast_printer_->Print(" (type = ");
604 ast_printer_->Print(StaticType::Type2String(expr->type())); 611 ast_printer_->Print(StaticType::Type2String(expr->type()));
605 printed_first = true; 612 printed_first = true;
606 } 613 }
607 if (expr->num() != AstNode::kNoNumber) {
608 ast_printer_->Print(printed_first ? ", num = " : " (num = ");
609 ast_printer_->Print("%d", expr->num());
610 printed_first = true;
611 }
612 if (printed_first) ast_printer_->Print(")"); 614 if (printed_first) ast_printer_->Print(")");
613 } 615 }
614 ast_printer_->Print("\n"); 616 ast_printer_->Print("\n");
615 ast_printer_->inc_indent(); 617 ast_printer_->inc_indent();
616 } 618 }
617 619
618 virtual ~IndentedScope() { 620 virtual ~IndentedScope() {
619 ast_printer_->dec_indent(); 621 ast_printer_->dec_indent();
620 } 622 }
621 623
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 PrintIndented(info); 662 PrintIndented(info);
661 Print(" "); 663 Print(" ");
662 PrintLiteral(value, quote); 664 PrintLiteral(value, quote);
663 Print("\n"); 665 Print("\n");
664 } 666 }
665 667
666 668
667 void AstPrinter::PrintLiteralWithModeIndented(const char* info, 669 void AstPrinter::PrintLiteralWithModeIndented(const char* info,
668 Variable* var, 670 Variable* var,
669 Handle<Object> value, 671 Handle<Object> value,
670 StaticType* type, 672 StaticType* type) {
671 int num,
672 bool is_primitive) {
673 if (var == NULL) { 673 if (var == NULL) {
674 PrintLiteralIndented(info, value, true); 674 PrintLiteralIndented(info, value, true);
675 } else { 675 } else {
676 EmbeddedVector<char, 256> buf; 676 EmbeddedVector<char, 256> buf;
677 int pos = OS::SNPrintF(buf, "%s (mode = %s", info, 677 int pos = OS::SNPrintF(buf, "%s (mode = %s", info,
678 Variable::Mode2String(var->mode())); 678 Variable::Mode2String(var->mode()));
679 if (type->IsKnown()) { 679 if (type->IsKnown()) {
680 pos += OS::SNPrintF(buf + pos, ", type = %s", 680 pos += OS::SNPrintF(buf + pos, ", type = %s",
681 StaticType::Type2String(type)); 681 StaticType::Type2String(type));
682 } 682 }
683 if (num != AstNode::kNoNumber) {
684 pos += OS::SNPrintF(buf + pos, ", num = %d", num);
685 }
686 pos += OS::SNPrintF(buf + pos,
687 is_primitive ? ", primitive" : ", non-primitive");
688 OS::SNPrintF(buf + pos, ")"); 683 OS::SNPrintF(buf + pos, ")");
689 PrintLiteralIndented(buf.start(), value, true); 684 PrintLiteralIndented(buf.start(), value, true);
690 } 685 }
691 } 686 }
692 687
693 688
694 void AstPrinter::PrintLabelsIndented(const char* info, ZoneStringList* labels) { 689 void AstPrinter::PrintLabelsIndented(const char* info, ZoneStringList* labels) {
695 if (labels != NULL && labels->length() > 0) { 690 if (labels != NULL && labels->length() > 0) {
696 if (info == NULL) { 691 if (info == NULL) {
697 PrintIndented("LABELS "); 692 PrintIndented("LABELS ");
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 } 730 }
736 } 731 }
737 732
738 733
739 void AstPrinter::PrintParameters(Scope* scope) { 734 void AstPrinter::PrintParameters(Scope* scope) {
740 if (scope->num_parameters() > 0) { 735 if (scope->num_parameters() > 0) {
741 IndentedScope indent("PARAMS"); 736 IndentedScope indent("PARAMS");
742 for (int i = 0; i < scope->num_parameters(); i++) { 737 for (int i = 0; i < scope->num_parameters(); i++) {
743 PrintLiteralWithModeIndented("VAR", scope->parameter(i), 738 PrintLiteralWithModeIndented("VAR", scope->parameter(i),
744 scope->parameter(i)->name(), 739 scope->parameter(i)->name(),
745 scope->parameter(i)->type(), 740 scope->parameter(i)->type());
746 AstNode::kNoNumber,
747 false);
748 } 741 }
749 } 742 }
750 } 743 }
751 744
752 745
753 void AstPrinter::PrintStatements(ZoneList<Statement*>* statements) { 746 void AstPrinter::PrintStatements(ZoneList<Statement*>* statements) {
754 for (int i = 0; i < statements->length(); i++) { 747 for (int i = 0; i < statements->length(); i++) {
755 Visit(statements->at(i)); 748 Visit(statements->at(i));
756 } 749 }
757 } 750 }
(...skipping 24 matching lines...) Expand all
782 PrintStatements(node->statements()); 775 PrintStatements(node->statements());
783 } 776 }
784 777
785 778
786 void AstPrinter::VisitDeclaration(Declaration* node) { 779 void AstPrinter::VisitDeclaration(Declaration* node) {
787 if (node->fun() == NULL) { 780 if (node->fun() == NULL) {
788 // var or const declarations 781 // var or const declarations
789 PrintLiteralWithModeIndented(Variable::Mode2String(node->mode()), 782 PrintLiteralWithModeIndented(Variable::Mode2String(node->mode()),
790 node->proxy()->AsVariable(), 783 node->proxy()->AsVariable(),
791 node->proxy()->name(), 784 node->proxy()->name(),
792 node->proxy()->AsVariable()->type(), 785 node->proxy()->AsVariable()->type());
793 AstNode::kNoNumber,
794 node->proxy()->IsPrimitive());
795 } else { 786 } else {
796 // function declarations 787 // function declarations
797 PrintIndented("FUNCTION "); 788 PrintIndented("FUNCTION ");
798 PrintLiteral(node->proxy()->name(), true); 789 PrintLiteral(node->proxy()->name(), true);
799 Print(" = function "); 790 Print(" = function ");
800 PrintLiteral(node->fun()->name(), false); 791 PrintLiteral(node->fun()->name(), false);
801 Print("\n"); 792 Print("\n");
802 } 793 }
803 } 794 }
804 795
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 break; 1011 break;
1021 default: 1012 default:
1022 UNREACHABLE(); 1013 UNREACHABLE();
1023 } 1014 }
1024 Print("\n"); 1015 Print("\n");
1025 } 1016 }
1026 1017
1027 1018
1028 void AstPrinter::VisitVariableProxy(VariableProxy* node) { 1019 void AstPrinter::VisitVariableProxy(VariableProxy* node) {
1029 PrintLiteralWithModeIndented("VAR PROXY", node->AsVariable(), node->name(), 1020 PrintLiteralWithModeIndented("VAR PROXY", node->AsVariable(), node->name(),
1030 node->type(), node->num(), node->IsPrimitive()); 1021 node->type());
1031 Variable* var = node->var(); 1022 Variable* var = node->var();
1032 if (var != NULL && var->rewrite() != NULL) { 1023 if (var != NULL && var->rewrite() != NULL) {
1033 IndentedScope indent; 1024 IndentedScope indent;
1034 Visit(var->rewrite()); 1025 Visit(var->rewrite());
1035 } 1026 }
1036 } 1027 }
1037 1028
1038 1029
1039 void AstPrinter::VisitAssignment(Assignment* node) { 1030 void AstPrinter::VisitAssignment(Assignment* node) {
1040 IndentedScope indent(Token::Name(node->op()), node); 1031 IndentedScope indent(Token::Name(node->op()), node);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 } 1099 }
1109 1100
1110 1101
1111 void AstPrinter::VisitCompareOperation(CompareOperation* node) { 1102 void AstPrinter::VisitCompareOperation(CompareOperation* node) {
1112 IndentedScope indent(Token::Name(node->op()), node); 1103 IndentedScope indent(Token::Name(node->op()), node);
1113 Visit(node->left()); 1104 Visit(node->left());
1114 Visit(node->right()); 1105 Visit(node->right());
1115 } 1106 }
1116 1107
1117 1108
1109 void AstPrinter::VisitCompareToNull(CompareToNull* node) {
1110 const char* name = node->is_strict()
1111 ? "COMPARE-TO-NULL-STRICT"
1112 : "COMPARE-TO-NULL";
1113 IndentedScope indent(name, node);
1114 Visit(node->expression());
1115 }
1116
1117
1118 void AstPrinter::VisitThisFunction(ThisFunction* node) { 1118 void AstPrinter::VisitThisFunction(ThisFunction* node) {
1119 IndentedScope indent("THIS-FUNCTION"); 1119 IndentedScope indent("THIS-FUNCTION");
1120 } 1120 }
1121 1121
1122 1122
1123 TagScope::TagScope(JsonAstBuilder* builder, const char* name) 1123 TagScope::TagScope(JsonAstBuilder* builder, const char* name)
1124 : builder_(builder), next_(builder->tag()), has_body_(false) { 1124 : builder_(builder), next_(builder->tag()), has_body_(false) {
1125 if (next_ != NULL) { 1125 if (next_ != NULL) {
1126 next_->use(); 1126 next_->use();
1127 builder->Print(",\n"); 1127 builder->Print(",\n");
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 TagScope tag(this, "CompareOperation"); 1503 TagScope tag(this, "CompareOperation");
1504 { 1504 {
1505 AttributesScope attributes(this); 1505 AttributesScope attributes(this);
1506 AddAttribute("op", Token::Name(expr->op())); 1506 AddAttribute("op", Token::Name(expr->op()));
1507 } 1507 }
1508 Visit(expr->left()); 1508 Visit(expr->left());
1509 Visit(expr->right()); 1509 Visit(expr->right());
1510 } 1510 }
1511 1511
1512 1512
1513 void JsonAstBuilder::VisitCompareToNull(CompareToNull* expr) {
1514 TagScope tag(this, "CompareToNull");
1515 {
1516 AttributesScope attributes(this);
1517 AddAttribute("is_strict", expr->is_strict());
1518 }
1519 Visit(expr->expression());
1520 }
1521
1522
1513 void JsonAstBuilder::VisitThisFunction(ThisFunction* expr) { 1523 void JsonAstBuilder::VisitThisFunction(ThisFunction* expr) {
1514 TagScope tag(this, "ThisFunction"); 1524 TagScope tag(this, "ThisFunction");
1515 } 1525 }
1516 1526
1517 1527
1518 void JsonAstBuilder::VisitDeclaration(Declaration* decl) { 1528 void JsonAstBuilder::VisitDeclaration(Declaration* decl) {
1519 TagScope tag(this, "Declaration"); 1529 TagScope tag(this, "Declaration");
1520 { 1530 {
1521 AttributesScope attributes(this); 1531 AttributesScope attributes(this);
1522 AddAttribute("mode", Variable::Mode2String(decl->mode())); 1532 AddAttribute("mode", Variable::Mode2String(decl->mode()));
1523 } 1533 }
1524 Visit(decl->proxy()); 1534 Visit(decl->proxy());
1525 if (decl->fun() != NULL) Visit(decl->fun()); 1535 if (decl->fun() != NULL) Visit(decl->fun());
1526 } 1536 }
1527 1537
1528 1538
1529 #endif // DEBUG 1539 #endif // DEBUG
1530 1540
1531 } } // namespace v8::internal 1541 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/prettyprinter.h ('k') | src/rewriter.cc » ('j') | src/x64/full-codegen-x64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698