Changeset 29818 in webkit for trunk/JavaScriptCore/kjs/nodes.h
- Timestamp:
- Jan 27, 2008, 1:38:01 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.h
r29815 r29818 90 90 struct DeclarationStacks { 91 91 typedef Vector<Node*, 16> NodeStack; 92 enum { IsConstant , HasInitializer} VarAttrs;92 enum { IsConstant = 1, HasInitializer = 2 } VarAttrs; 93 93 typedef Vector<std::pair<Identifier, unsigned>, 16> VarStack; 94 94 typedef Vector<FuncDeclNode*, 16> FunctionStack; … … 125 125 class Node : public ParserRefCounted { 126 126 public: 127 typedef DeclarationStacks::NodeStack NodeStack; 128 typedef DeclarationStacks::VarStack VarStack; 129 typedef DeclarationStacks::FunctionStack FunctionStack; 130 127 131 Node() KJS_FAST_CALL; 128 132 Node(PlacementNewAdoptType placementAdopt) KJS_FAST_CALL … … 138 142 139 143 // Used for iterative, depth-first traversal of the node tree. Does not cross function call boundaries. 140 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL { }144 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { } 141 145 142 146 protected: … … 324 328 } 325 329 326 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;330 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 327 331 328 332 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 369 373 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 370 374 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 371 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;375 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 372 376 373 377 PassRefPtr<ElementNode> releaseNext() KJS_FAST_CALL { return next.release(); } … … 389 393 ArrayNode(int eli, ElementNode* ele) KJS_FAST_CALL 390 394 : element(ele), elision(eli), opt(true) { } 391 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;395 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 392 396 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 393 397 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 404 408 PropertyNode(const Identifier& n, ExpressionNode* a, Type t) KJS_FAST_CALL 405 409 : m_name(n), assign(a), type(t) { } 406 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;410 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 407 411 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 408 412 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 424 428 PropertyListNode(PropertyNode* n, PropertyListNode* l) KJS_FAST_CALL 425 429 : node(n) { l->next = this; } 426 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;430 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 427 431 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 428 432 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 441 445 ObjectLiteralNode() KJS_FAST_CALL { } 442 446 ObjectLiteralNode(PropertyListNode* l) KJS_FAST_CALL : list(l) { } 443 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;447 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 444 448 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 445 449 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 453 457 public: 454 458 BracketAccessorNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : expr1(e1), expr2(e2) {} 455 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;459 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 456 460 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 457 461 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 476 480 public: 477 481 DotAccessorNode(ExpressionNode* e, const Identifier& s) KJS_FAST_CALL : expr(e), ident(s) { } 478 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;482 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 479 483 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 480 484 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 501 505 ArgumentListNode(ArgumentListNode* l, ExpressionNode* e) KJS_FAST_CALL 502 506 : expr(e) { l->next = this; } 503 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;507 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 504 508 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 505 509 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 519 523 ArgumentsNode(ArgumentListNode* l) KJS_FAST_CALL 520 524 : listNode(l) { } 521 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;525 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 522 526 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 523 527 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 533 537 NewExprNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {} 534 538 NewExprNode(ExpressionNode* e, ArgumentsNode* a) KJS_FAST_CALL : expr(e), args(a) {} 535 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;539 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 536 540 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 537 541 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 550 554 public: 551 555 FunctionCallValueNode(ExpressionNode* e, ArgumentsNode* a) KJS_FAST_CALL : expr(e), args(a) {} 552 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;556 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 553 557 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 554 558 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 574 578 } 575 579 576 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;580 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 577 581 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 578 582 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 611 615 public: 612 616 FunctionCallBracketNode(ExpressionNode* b, ExpressionNode* s, ArgumentsNode* a) KJS_FAST_CALL : base(b), subscript(s), args(a) {} 613 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;617 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 614 618 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 615 619 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 624 628 public: 625 629 FunctionCallDotNode(ExpressionNode* b, const Identifier& i, ArgumentsNode* a) KJS_FAST_CALL : base(b), ident(i), args(a) {} 626 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;630 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 627 631 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 628 632 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 663 667 } 664 668 665 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;669 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 666 670 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 667 671 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 668 672 virtual Precedence precedence() const { return PrecPostfix; } 669 673 virtual void optimizeForUnnecessaryResult(); 670 671 674 }; 672 675 … … 684 687 }; 685 688 689 class PostIncConstNode : public PostIncResolveNode { 690 public: 691 PostIncConstNode(size_t i) KJS_FAST_CALL 692 : PostIncResolveNode(PlacementNewAdopt) 693 { 694 ASSERT(i != missingSymbolMarker()); 695 m_index = i; 696 } 697 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 698 }; 699 686 700 class PostDecResolveNode : public PrePostResolveNode { 687 701 public: … … 693 707 } 694 708 695 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;709 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 696 710 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 697 711 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 719 733 }; 720 734 735 class PostDecConstNode : public PostDecResolveNode { 736 public: 737 PostDecConstNode(size_t i) KJS_FAST_CALL 738 : PostDecResolveNode(PlacementNewAdopt) 739 { 740 ASSERT(i != missingSymbolMarker()); 741 m_index = i; 742 } 743 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 744 }; 745 721 746 class PostfixBracketNode : public ExpressionNode { 722 747 public: 723 748 PostfixBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : m_base(b), m_subscript(s) {} 724 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;749 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 725 750 virtual Precedence precedence() const { return PrecPostfix; } 726 751 protected: … … 746 771 public: 747 772 PostfixDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : m_base(b), m_ident(i) {} 748 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;773 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 749 774 virtual Precedence precedence() const { return PrecPostfix; } 750 775 protected: … … 787 812 } 788 813 789 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;814 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 790 815 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 791 816 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 808 833 public: 809 834 DeleteBracketNode(ExpressionNode* base, ExpressionNode* subscript) KJS_FAST_CALL : m_base(base), m_subscript(subscript) {} 810 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;835 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 811 836 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 812 837 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 820 845 public: 821 846 DeleteDotNode(ExpressionNode* base, const Identifier& i) KJS_FAST_CALL : m_base(base), m_ident(i) {} 822 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;847 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 823 848 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 824 849 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 832 857 public: 833 858 DeleteValueNode(ExpressionNode* e) KJS_FAST_CALL : m_expr(e) {} 834 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;859 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 835 860 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 836 861 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 843 868 public: 844 869 VoidNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {} 845 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;870 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 846 871 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 847 872 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 863 888 } 864 889 865 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;890 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 866 891 867 892 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 892 917 public: 893 918 TypeOfValueNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(StringType), m_expr(e) {} 894 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;919 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 895 920 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 896 921 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 912 937 } 913 938 914 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;939 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 915 940 916 941 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 931 956 }; 932 957 958 class PreIncConstNode : public PreIncResolveNode { 959 public: 960 PreIncConstNode(size_t i) KJS_FAST_CALL 961 : PreIncResolveNode(PlacementNewAdopt) 962 { 963 ASSERT(i != missingSymbolMarker()); 964 m_index = i; 965 } 966 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 967 }; 968 933 969 class PreDecResolveNode : public PrePostResolveNode { 934 970 public: … … 943 979 } 944 980 945 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;981 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 946 982 947 983 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 962 998 }; 963 999 1000 class PreDecConstNode : public PreDecResolveNode { 1001 public: 1002 PreDecConstNode(size_t i) KJS_FAST_CALL 1003 : PreDecResolveNode(PlacementNewAdopt) 1004 { 1005 ASSERT(i != missingSymbolMarker()); 1006 m_index = i; 1007 } 1008 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1009 }; 1010 964 1011 class PrefixBracketNode : public ExpressionNode { 965 1012 public: 966 1013 PrefixBracketNode(ExpressionNode* b, ExpressionNode* s) KJS_FAST_CALL : m_base(b), m_subscript(s) {} 967 1014 968 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1015 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 969 1016 virtual Precedence precedence() const { return PrecUnary; } 970 1017 protected: … … 990 1037 public: 991 1038 PrefixDotNode(ExpressionNode* b, const Identifier& i) KJS_FAST_CALL : m_base(b), m_ident(i) {} 992 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1039 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 993 1040 virtual Precedence precedence() const { return PrecPostfix; } 994 1041 protected: … … 1025 1072 public: 1026 1073 UnaryPlusNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), m_expr(e) {} 1027 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1074 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1028 1075 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1029 1076 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1040 1087 public: 1041 1088 NegateNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), expr(e) {} 1042 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1089 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1043 1090 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1044 1091 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1052 1099 public: 1053 1100 BitwiseNotNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), expr(e) {} 1054 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1101 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1055 1102 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1056 1103 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1068 1115 public: 1069 1116 LogicalNotNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(BooleanType), expr(e) {} 1070 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1117 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1071 1118 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1072 1119 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1080 1127 public: 1081 1128 MultNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1082 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1129 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1083 1130 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1084 1131 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1097 1144 public: 1098 1145 DivNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1099 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1146 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1100 1147 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1101 1148 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1113 1160 public: 1114 1161 ModNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1115 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1162 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1116 1163 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1117 1164 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1130 1177 public: 1131 1178 AddNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : term1(t1), term2(t2) {} 1132 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1179 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1133 1180 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1134 1181 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1177 1224 public: 1178 1225 SubNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1179 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1226 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1180 1227 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1181 1228 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1194 1241 LeftShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1195 1242 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1196 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1243 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1197 1244 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1198 1245 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1211 1258 RightShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1212 1259 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1213 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1260 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1214 1261 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1215 1262 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1228 1275 UnsignedRightShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1229 1276 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1230 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1277 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1231 1278 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1232 1279 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1245 1292 LessNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1246 1293 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1247 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1294 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1248 1295 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1249 1296 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1281 1328 GreaterNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : 1282 1329 expr1(e1), expr2(e2) {} 1283 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1330 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1284 1331 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1285 1332 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1296 1343 LessEqNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : 1297 1344 expr1(e1), expr2(e2) {} 1298 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1345 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1299 1346 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1300 1347 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1311 1358 GreaterEqNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : 1312 1359 expr1(e1), expr2(e2) {} 1313 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1360 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1314 1361 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1315 1362 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1326 1373 InstanceOfNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1327 1374 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1328 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1375 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1329 1376 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1330 1377 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1340 1387 InNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : 1341 1388 expr1(e1), expr2(e2) {} 1342 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1389 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1343 1390 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1344 1391 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1354 1401 EqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1355 1402 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1356 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1403 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1357 1404 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1358 1405 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1369 1416 NotEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1370 1417 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1371 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1418 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1372 1419 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1373 1420 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1384 1431 StrictEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1385 1432 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1386 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1433 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1387 1434 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1388 1435 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1399 1446 NotStrictEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1400 1447 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1401 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1448 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1402 1449 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1403 1450 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1414 1461 BitAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1415 1462 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1416 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1463 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1417 1464 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1418 1465 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1432 1479 BitOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1433 1480 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1434 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1481 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1435 1482 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1436 1483 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1450 1497 BitXOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1451 1498 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1452 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1499 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1453 1500 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1454 1501 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 1471 1518 LogicalAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1472 1519 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1473 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1520 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1474 1521 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1475 1522 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1486 1533 LogicalOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1487 1534 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1488 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1535 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1489 1536 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1490 1537 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1504 1551 ConditionalNode(ExpressionNode* l, ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL : 1505 1552 logical(l), expr1(e1), expr2(e2) {} 1506 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1553 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1507 1554 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1508 1555 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL; … … 1534 1581 } 1535 1582 1536 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1583 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1537 1584 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1538 1585 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1557 1604 }; 1558 1605 1606 class ReadModifyConstNode : public ReadModifyResolveNode { 1607 public: 1608 ReadModifyConstNode(size_t i) KJS_FAST_CALL 1609 : ReadModifyResolveNode(PlacementNewAdopt) 1610 { 1611 ASSERT(i != missingSymbolMarker()); 1612 m_index = i; 1613 } 1614 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1615 }; 1616 1559 1617 class AssignResolveNode : public ExpressionNode { 1560 1618 public: … … 1572 1630 } 1573 1631 1574 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1632 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1575 1633 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1576 1634 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1594 1652 }; 1595 1653 1654 class AssignConstNode : public AssignResolveNode { 1655 public: 1656 AssignConstNode() KJS_FAST_CALL 1657 : AssignResolveNode(PlacementNewAdopt) 1658 { 1659 } 1660 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1661 }; 1662 1596 1663 class ReadModifyBracketNode : public ExpressionNode { 1597 1664 public: 1598 1665 ReadModifyBracketNode(ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right) KJS_FAST_CALL 1599 1666 : m_base(base), m_subscript(subscript), m_oper(oper), m_right(right) {} 1600 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1667 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1601 1668 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1602 1669 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1613 1680 AssignBracketNode(ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right) KJS_FAST_CALL 1614 1681 : m_base(base), m_subscript(subscript), m_right(right) {} 1615 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1682 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1616 1683 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1617 1684 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1627 1694 AssignDotNode(ExpressionNode* base, const Identifier& ident, ExpressionNode* right) KJS_FAST_CALL 1628 1695 : m_base(base), m_ident(ident), m_right(right) {} 1629 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1696 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1630 1697 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1631 1698 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1641 1708 ReadModifyDotNode(ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right) KJS_FAST_CALL 1642 1709 : m_base(base), m_ident(ident), m_oper(oper), m_right(right) {} 1643 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1710 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1644 1711 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1645 1712 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1671 1738 e1->optimizeForUnnecessaryResult(); 1672 1739 } 1673 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1740 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1674 1741 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1675 1742 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1683 1750 public: 1684 1751 ConstDeclNode(const Identifier& id, ExpressionNode* in) KJS_FAST_CALL; 1685 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1752 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1686 1753 virtual KJS::JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1687 1754 void evaluateSingle(ExecState*) KJS_FAST_CALL; … … 1700 1767 public: 1701 1768 ConstStatementNode(ConstDeclNode* l) KJS_FAST_CALL : next(l) { } 1702 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1769 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1703 1770 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1704 1771 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1724 1791 public: 1725 1792 BlockNode(SourceElements* children) KJS_FAST_CALL; 1726 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1793 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1727 1794 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1728 1795 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1742 1809 public: 1743 1810 ExprStatementNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) { } 1744 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1811 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1745 1812 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1746 1813 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1752 1819 public: 1753 1820 VarStatementNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) { } 1754 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1821 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1755 1822 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1756 1823 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1763 1830 IfNode(ExpressionNode* e, StatementNode *s) KJS_FAST_CALL 1764 1831 : m_condition(e), m_ifBlock(s) { } 1765 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1832 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1766 1833 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1767 1834 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1775 1842 IfElseNode(ExpressionNode* e, StatementNode* ifBlock, StatementNode* elseBlock) KJS_FAST_CALL 1776 1843 : IfNode(e, ifBlock), m_elseBlock(elseBlock) { } 1777 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1844 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1778 1845 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1779 1846 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1785 1852 public: 1786 1853 DoWhileNode(StatementNode *s, ExpressionNode* e) KJS_FAST_CALL : statement(s), expr(e) { } 1787 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1854 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1788 1855 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1789 1856 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1796 1863 public: 1797 1864 WhileNode(ExpressionNode* e, StatementNode *s) KJS_FAST_CALL : expr(e), statement(s) { } 1798 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1865 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1799 1866 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1800 1867 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1822 1889 } 1823 1890 1824 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1891 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1825 1892 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1826 1893 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1837 1904 ForInNode(ExpressionNode* l, ExpressionNode* e, StatementNode *s) KJS_FAST_CALL; 1838 1905 ForInNode(const Identifier &i, ExpressionNode *in, ExpressionNode* e, StatementNode *s) KJS_FAST_CALL; 1839 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1906 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1840 1907 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1841 1908 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1872 1939 public: 1873 1940 ReturnNode(ExpressionNode* v) KJS_FAST_CALL : value(v) {} 1874 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1941 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1875 1942 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1876 1943 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1882 1949 public: 1883 1950 WithNode(ExpressionNode* e, StatementNode* s) KJS_FAST_CALL : expr(e), statement(s) { } 1884 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1951 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1885 1952 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1886 1953 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1893 1960 public: 1894 1961 LabelNode(const Identifier &l, StatementNode *s) KJS_FAST_CALL : label(l), statement(s) { } 1895 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1962 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1896 1963 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1897 1964 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1904 1971 public: 1905 1972 ThrowNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {} 1906 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1973 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1907 1974 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1908 1975 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1915 1982 TryNode(StatementNode *b, const Identifier &e, StatementNode *c, StatementNode *f) KJS_FAST_CALL 1916 1983 : tryBlock(b), exceptionIdent(e), catchBlock(c), finallyBlock(f) { } 1917 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;1984 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 1918 1985 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1919 1986 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 1944 2011 class ScopeNode : public BlockNode { 1945 2012 public: 1946 ScopeNode(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2013 ScopeNode(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1947 2014 1948 2015 int sourceId() const KJS_FAST_CALL { return m_sourceId; } … … 1953 2020 void optimizeVariableAccess(ExecState*) KJS_FAST_CALL; 1954 2021 1955 DeclarationStacks::VarStack m_varStack;1956 DeclarationStacks::FunctionStack m_functionStack;2022 VarStack m_varStack; 2023 FunctionStack m_functionStack; 1957 2024 1958 2025 private: … … 1963 2030 class ProgramNode : public ScopeNode { 1964 2031 public: 1965 static ProgramNode* create(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2032 static ProgramNode* create(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1966 2033 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1967 2034 1968 2035 private: 1969 ProgramNode(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2036 ProgramNode(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1970 2037 void initializeSymbolTable(ExecState*) KJS_FAST_CALL; 1971 2038 ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL; … … 1977 2044 class EvalNode : public ScopeNode { 1978 2045 public: 1979 static EvalNode* create(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2046 static EvalNode* create(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1980 2047 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 1981 2048 1982 2049 private: 1983 EvalNode(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2050 EvalNode(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1984 2051 ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL; 1985 2052 }; … … 1987 2054 class FunctionBodyNode : public ScopeNode { 1988 2055 public: 1989 static FunctionBodyNode* create(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2056 static FunctionBodyNode* create(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 1990 2057 1991 2058 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; … … 1997 2064 1998 2065 protected: 1999 FunctionBodyNode(SourceElements*, DeclarationStacks::VarStack*, DeclarationStacks::FunctionStack*) KJS_FAST_CALL;2066 FunctionBodyNode(SourceElements*, VarStack*, FunctionStack*) KJS_FAST_CALL; 2000 2067 2001 2068 private: … … 2046 2113 CaseClauseNode(ExpressionNode* e, SourceElements* children) KJS_FAST_CALL 2047 2114 : expr(e) { if (children) children->releaseContentsIntoVector(m_children); } 2048 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;2115 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2049 2116 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2050 2117 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 2063 2130 ClauseListNode(ClauseListNode* n, CaseClauseNode* c) KJS_FAST_CALL 2064 2131 : clause(c) { n->next = this; } 2065 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;2132 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2066 2133 CaseClauseNode* getClause() const KJS_FAST_CALL { return clause.get(); } 2067 2134 ClauseListNode* getNext() const KJS_FAST_CALL { return next.get(); } … … 2078 2145 public: 2079 2146 CaseBlockNode(ClauseListNode* l1, CaseClauseNode* d, ClauseListNode* l2) KJS_FAST_CALL; 2080 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;2147 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2081 2148 JSValue* executeBlock(ExecState*, JSValue *input) KJS_FAST_CALL; 2082 2149 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 2091 2158 public: 2092 2159 SwitchNode(ExpressionNode* e, CaseBlockNode *b) KJS_FAST_CALL : expr(e), block(b) { } 2093 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;2160 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2094 2161 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 2095 2162 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 2104 2171 virtual JSValue* execute(ExecState*) KJS_FAST_CALL; 2105 2172 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2106 virtual void optimizeVariableAccess( SymbolTable&, DeclarationStacks::NodeStack&) KJS_FAST_CALL;2173 virtual void optimizeVariableAccess(const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2107 2174 private: 2108 2175 RefPtr<StatementNode> m_statement;
Note:
See TracChangeset
for help on using the changeset viewer.