Changeset 29809 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Jan 26, 2008, 10:27:57 AM (17 years ago)
- Location:
- trunk/JavaScriptCore/kjs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.h
r29804 r29809 722 722 PostfixBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : m_base(b), m_subscript(s) {} 723 723 virtual void optimizeVariableAccess(SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 724 virtual void streamTo(SourceStream&) const KJS_FAST_CALL;725 724 virtual Precedence precedence() const { return PrecPostfix; } 726 725 protected: 727 virtual bool isIncrement() const = 0;728 726 RefPtr<ExpressionNode> m_base; 729 727 RefPtr<ExpressionNode> m_subscript; … … 734 732 PostIncBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : PostfixBracketNode(b, s) {} 735 733 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 736 protected: 737 virtual bool isIncrement() const { return true; } 734 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 738 735 }; 739 736 … … 742 739 PostDecBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : PostfixBracketNode(b, s) {} 743 740 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 744 protected: 745 virtual bool isIncrement() const { return false; } 741 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 746 742 }; 747 743 … … 750 746 PostfixDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : m_base(b), m_ident(i) {} 751 747 virtual void optimizeVariableAccess(SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 752 virtual void streamTo(SourceStream&) const KJS_FAST_CALL;753 748 virtual Precedence precedence() const { return PrecPostfix; } 754 749 protected: 755 virtual bool isIncrement() const = 0;756 750 RefPtr<ExpressionNode> m_base; 757 751 Identifier m_ident; … … 762 756 PostIncDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : PostfixDotNode(b, i) {} 763 757 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 764 protected: 765 virtual bool isIncrement() const { return true; } 758 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 766 759 }; 767 760 … … 770 763 PostDecDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : PostfixDotNode(b, i) {} 771 764 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 772 protected: 773 virtual bool isIncrement() const { return false; } 765 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 774 766 }; 775 767 … … 974 966 975 967 virtual void optimizeVariableAccess(SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 976 virtual void streamTo(SourceStream&) const KJS_FAST_CALL;977 968 virtual Precedence precedence() const { return PrecUnary; } 978 969 protected: 979 virtual bool isIncrement() const = 0;980 970 RefPtr<ExpressionNode> m_base; 981 971 RefPtr<ExpressionNode> m_subscript; … … 986 976 PreIncBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : PrefixBracketNode(b, s) {} 987 977 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 988 protected: 989 bool isIncrement() const { return true; } 978 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 990 979 }; 991 980 … … 994 983 PreDecBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : PrefixBracketNode(b, s) {} 995 984 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 996 protected: 997 bool isIncrement() const { return false; } 985 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 998 986 }; 999 987 … … 1002 990 PrefixDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : m_base(b), m_ident(i) {} 1003 991 virtual void optimizeVariableAccess(SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1004 virtual void streamTo(SourceStream&) const KJS_FAST_CALL;1005 992 virtual Precedence precedence() const { return PrecPostfix; } 1006 993 protected: 1007 virtual bool isIncrement() const = 0;1008 994 RefPtr<ExpressionNode> m_base; 1009 995 Identifier m_ident; … … 1014 1000 PreIncDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : PrefixDotNode(b, i) {} 1015 1001 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1016 protected: 1017 virtual bool isIncrement() const { return true; } 1002 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1018 1003 }; 1019 1004 … … 1022 1007 PreDecDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : PrefixDotNode(b, i) {} 1023 1008 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1024 protected: 1025 virtual bool isIncrement() const { return false; } 1009 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1026 1010 }; 1027 1011 -
trunk/JavaScriptCore/kjs/nodes2string.cpp
r29804 r29809 262 262 } 263 263 264 static inline void bracketNodeStreamTo(SourceStream& s, const RefPtr<ExpressionNode>& base, const RefPtr<ExpressionNode>& subscript) 265 { 266 s << PrecCall << base.get() << "[" << subscript.get() << "]"; 267 } 268 269 static inline void dotNodeStreamTo(SourceStream& s, const RefPtr<ExpressionNode>& base, const Identifier& ident) 270 { 271 s << DotExpr << PrecCall << base.get() << "." << ident; 272 } 273 264 274 // -------- 265 275 … … 420 430 void FunctionCallBracketNode::streamTo(SourceStream& s) const 421 431 { 422 s << PrecCall << base << "[" << subscript << "]" << args; 432 bracketNodeStreamTo(s, base, subscript); 433 s << args; 423 434 } 424 435 425 436 void FunctionCallDotNode::streamTo(SourceStream& s) const 426 437 { 427 s << DotExpr << PrecCall << base << "." << ident << args; 438 dotNodeStreamTo(s, base, ident); 439 s << args; 428 440 } 429 441 … … 438 450 } 439 451 440 void PostfixBracketNode::streamTo(SourceStream& s) const 441 { 442 s << PrecCall << m_base << "[" << m_subscript << "]"; 443 if (isIncrement()) 444 s << "++"; 445 else 446 s << "--"; 447 } 448 449 void PostfixDotNode::streamTo(SourceStream& s) const 450 { 451 s << DotExpr << PrecCall << m_base << "." << m_ident; 452 if (isIncrement()) 453 s << "++"; 454 else 455 s << "--"; 452 void PostIncBracketNode::streamTo(SourceStream& s) const 453 { 454 bracketNodeStreamTo(s, m_base, m_subscript); 455 s << "++"; 456 } 457 458 void PostDecBracketNode::streamTo(SourceStream& s) const 459 { 460 bracketNodeStreamTo(s, m_base, m_subscript); 461 s << "--"; 462 } 463 464 void PostIncDotNode::streamTo(SourceStream& s) const 465 { 466 dotNodeStreamTo(s, m_base, m_ident); 467 s << "++"; 468 } 469 470 void PostDecDotNode::streamTo(SourceStream& s) const 471 { 472 dotNodeStreamTo(s, m_base, m_ident); 473 s << "--"; 456 474 } 457 475 … … 472 490 void DeleteBracketNode::streamTo(SourceStream& s) const 473 491 { 474 s << "delete " << PrecCall << m_base << "[" << m_subscript << "]"; 492 s << "delete "; 493 bracketNodeStreamTo(s, m_base, m_subscript); 475 494 } 476 495 477 496 void DeleteDotNode::streamTo(SourceStream& s) const 478 497 { 479 s << "delete " << DotExpr << PrecCall << m_base << "." << m_ident; 498 s << "delete "; 499 dotNodeStreamTo(s, m_base, m_ident); 480 500 } 481 501 … … 510 530 } 511 531 512 void PrefixBracketNode::streamTo(SourceStream& s) const 513 { 514 if (isIncrement()) 515 s << "++"; 516 else 517 s << "--"; 518 s << PrecCall << m_base << "[" << m_subscript << "]"; 519 } 520 521 void PrefixDotNode::streamTo(SourceStream& s) const 522 { 523 if (isIncrement()) 524 s << "++"; 525 else 526 s << "--"; 527 s << DotExpr << PrecCall << m_base << "." << m_ident; 532 void PreIncBracketNode::streamTo(SourceStream& s) const 533 { 534 s << "++"; 535 bracketNodeStreamTo(s, m_base, m_subscript); 536 } 537 538 void PreDecBracketNode::streamTo(SourceStream& s) const 539 { 540 s << "--"; 541 bracketNodeStreamTo(s, m_base, m_subscript); 542 } 543 544 void PreIncDotNode::streamTo(SourceStream& s) const 545 { 546 s << "++"; 547 dotNodeStreamTo(s, m_base, m_ident); 548 } 549 550 void PreDecDotNode::streamTo(SourceStream& s) const 551 { 552 s << "--"; 553 dotNodeStreamTo(s, m_base, m_ident); 528 554 } 529 555 … … 690 716 void ReadModifyBracketNode::streamTo(SourceStream& s) const 691 717 { 692 s << PrecCall << m_base << '[' << m_subscript << "] "693 718 bracketNodeStreamTo(s, m_base, m_subscript); 719 s << ' ' << operatorString(m_oper) << ' ' << PrecAssignment << m_right; 694 720 } 695 721 696 722 void AssignBracketNode::streamTo(SourceStream& s) const 697 723 { 698 s << PrecCall << m_base << '[' << m_subscript << "] = " << PrecAssignment << m_right; 724 bracketNodeStreamTo(s, m_base, m_subscript); 725 s << " = " << PrecAssignment << m_right; 699 726 } 700 727 701 728 void ReadModifyDotNode::streamTo(SourceStream& s) const 702 729 { 703 s << DotExpr << PrecCall << m_base << "." << m_ident << ' '704 730 dotNodeStreamTo(s, m_base, m_ident); 731 s << ' ' << operatorString(m_oper) << ' ' << PrecAssignment << m_right; 705 732 } 706 733 707 734 void AssignDotNode::streamTo(SourceStream& s) const 708 735 { 709 s << DotExpr << PrecCall << m_base << "." << m_ident << " = " << PrecAssignment << m_right; 736 dotNodeStreamTo(s, m_base, m_ident); 737 s << " = " << PrecAssignment << m_right; 710 738 } 711 739 … … 807 835 void WhileNode::streamTo(SourceStream& s) const 808 836 { 809 s << Endl << "while (" << expr << ')' << Indent << statement << Unindent;837 s << Endl << "while (" << expr << ')' << Indent << statement << Unindent; 810 838 } 811 839 … … 934 962 } 935 963 936 } 964 } // namespace KJS
Note:
See TracChangeset
for help on using the changeset viewer.