Changeset 34355 in webkit for trunk/JavaScriptCore/kjs/nodes.h
- Timestamp:
- Jun 3, 2008, 5:40:47 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.h
r34351 r34355 184 184 virtual bool needsParensIfLeftmost() const { return false; } 185 185 186 // Used for iterative, depth-first traversal of the node tree. Does not cross function call boundaries.187 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { }188 189 186 protected: 190 187 Node(JSType) KJS_FAST_CALL; // used by ExpressionNode 191 188 192 // for use in execute()193 JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;194 JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;195 196 // for use in evaluate()197 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;198 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const char*) KJS_FAST_CALL;199 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*) KJS_FAST_CALL;200 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;201 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, const Identifier&) KJS_FAST_CALL;202 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, Node*) KJS_FAST_CALL;203 JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, const Identifier&) KJS_FAST_CALL;204 205 189 RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg); 206 190 RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg, const Identifier&); 207 208 JSValue* throwUndefinedVariableError(OldInterpreterExecState*, const Identifier&) KJS_FAST_CALL;209 210 void handleException(OldInterpreterExecState*) KJS_FAST_CALL;211 void handleException(OldInterpreterExecState*, JSValue*) KJS_FAST_CALL;212 213 // for use in execute()214 JSValue* rethrowException(OldInterpreterExecState*) KJS_FAST_CALL;215 191 216 192 int m_line : 28; … … 240 216 JSType expectedReturnType() const KJS_FAST_CALL { return static_cast<JSType>(m_expectedReturnType); } 241 217 242 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL = 0;243 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;244 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;245 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;246 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;247 248 // Used to optimize those nodes that do extra work when returning a result, even if the result has no semantic relevance249 virtual void optimizeForUnnecessaryResult() { }250 251 218 // This needs to be in public in order to compile using GCC 3.x 252 219 typedef enum { EvalOperator, FunctionCall } CallerType; 253 protected:254 template <CallerType, bool> inline JSValue* resolveAndCall(OldInterpreterExecState*, const Identifier&, ArgumentsNode*, size_t = 0);255 220 }; 256 221 … … 262 227 int lastLine() const KJS_FAST_CALL { return m_lastLine; } 263 228 264 virtual JSValue* execute(OldInterpreterExecState *exec) KJS_FAST_CALL = 0;265 266 229 virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_labelStack.push(ident); } 267 230 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 284 247 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 285 248 286 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;287 249 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 288 250 virtual Precedence precedence() const { return PrecPrimary; } … … 298 260 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 299 261 300 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;301 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return false; }302 262 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 303 263 virtual Precedence precedence() const { return PrecPrimary; } … … 313 273 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 314 274 315 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;316 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return true; }317 275 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 318 276 virtual Precedence precedence() const { return PrecPrimary; } … … 340 298 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 341 299 342 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;343 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;344 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;345 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;346 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;347 300 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 348 301 virtual Precedence precedence() const { return signbit(m_double) ? PrecUnary : PrecPrimary; } … … 365 318 } 366 319 367 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;368 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;369 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;370 371 320 virtual void setValue(double d) KJS_FAST_CALL { m_double = d; m_value = JSImmediate::from(d); ASSERT(m_value); } 372 321 … … 385 334 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 386 335 387 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;388 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;389 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;390 336 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 391 337 virtual Precedence precedence() const { return PrecPrimary; } … … 404 350 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 405 351 406 JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;407 352 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 408 353 virtual Precedence precedence() const { return PrecPrimary; } … … 420 365 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 421 366 422 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;423 367 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 424 368 virtual Precedence precedence() const { return PrecPrimary; } … … 440 384 441 385 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 442 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 443 444 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL; 445 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL; 446 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL; 447 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL; 448 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL; 386 449 387 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 450 388 virtual Precedence precedence() const { return PrecPrimary; } … … 455 393 456 394 protected: 457 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);458 395 Identifier m_ident; 459 396 int m_index; // Used by LocalVarAccessNode and ScopedVarAccessNode. … … 461 398 }; 462 399 463 class LocalVarAccessNode : public ResolveNode {464 public:465 // Overwrites a ResolveNode in place.466 LocalVarAccessNode(int i) KJS_FAST_CALL467 : ResolveNode(PlacementNewAdopt)468 {469 ASSERT(i != missingSymbolMarker());470 m_index = i;471 }472 473 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;474 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;475 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;476 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;477 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;478 479 private:480 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);481 };482 483 class ScopedVarAccessNode : public ResolveNode {484 public:485 // Overwrites a ResolveNode in place.486 ScopedVarAccessNode(int i, size_t scopeDepth) KJS_FAST_CALL487 : ResolveNode(PlacementNewAdopt)488 {489 ASSERT(i != missingSymbolMarker());490 m_index = i;491 m_scopeDepth = scopeDepth;492 }493 494 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;495 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;496 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;497 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;498 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;499 500 private:501 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);502 };503 504 class NonLocalVarAccessNode : public ResolveNode {505 public:506 // Overwrites a ResolveNode in place.507 NonLocalVarAccessNode(size_t scopeDepth) KJS_FAST_CALL508 : ResolveNode(PlacementNewAdopt)509 {510 ASSERT(scopeDepth != 0);511 m_scopeDepth = scopeDepth;512 }513 514 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;515 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;516 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;517 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;518 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;519 520 private:521 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);522 };523 524 400 class ElementNode : public Node { 525 401 public: … … 539 415 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 540 416 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 541 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;542 417 543 418 PassRefPtr<ElementNode> releaseNext() KJS_FAST_CALL { return m_next.release(); } 544 545 JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;546 419 547 420 private: … … 576 449 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 577 450 578 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;579 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;580 451 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 581 452 virtual Precedence precedence() const { return PrecPrimary; } … … 598 469 } 599 470 600 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;601 471 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 602 472 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 603 473 604 JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;605 474 const Identifier& name() const { return m_name; } 606 475 … … 626 495 627 496 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 628 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;629 497 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 630 498 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 631 499 632 JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;633 500 PassRefPtr<PropertyListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); } 634 501 … … 651 518 652 519 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 653 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;654 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;655 520 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 656 521 virtual Precedence precedence() const { return PrecPrimary; } … … 671 536 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 672 537 673 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;674 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;675 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;676 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;677 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;678 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;679 538 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 680 539 virtual Precedence precedence() const { return PrecMember; } … … 686 545 687 546 private: 688 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);689 690 547 RefPtr<ExpressionNode> m_base; 691 548 RefPtr<ExpressionNode> m_subscript; … … 701 558 702 559 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 703 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;704 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;705 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;706 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;707 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;708 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;709 560 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 710 561 virtual Precedence precedence() const { return PrecMember; } … … 716 567 717 568 private: 718 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);719 720 569 RefPtr<ExpressionNode> m_base; 721 570 Identifier m_ident; … … 736 585 737 586 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 738 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;739 587 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 740 588 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 741 589 742 void evaluateList(OldInterpreterExecState*, List&) KJS_FAST_CALL;743 590 PassRefPtr<ArgumentListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); } 744 591 … … 758 605 } 759 606 760 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;761 607 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 762 608 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 763 764 void evaluateList(OldInterpreterExecState* exec, List& list) KJS_FAST_CALL { if (m_listNode) m_listNode->evaluateList(exec, list); }765 609 766 610 RefPtr<ArgumentListNode> m_listNode; … … 782 626 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 783 627 784 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;785 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;786 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;787 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;788 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;789 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;790 628 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 791 629 virtual Precedence precedence() const { return PrecLeftHandSide; } 792 630 793 631 private: 794 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);795 796 632 RefPtr<ExpressionNode> m_expr; 797 633 RefPtr<ArgumentsNode> m_args; … … 806 642 807 643 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 808 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;809 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;810 644 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 811 645 virtual Precedence precedence() const { return PrecCall; } … … 824 658 825 659 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 826 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;827 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;828 660 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 829 661 virtual Precedence precedence() const { return PrecCall; } … … 851 683 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 852 684 853 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;854 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;855 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;856 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;857 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;858 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;859 685 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 860 686 virtual Precedence precedence() const { return PrecCall; } 861 687 862 688 protected: 863 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);864 865 689 Identifier m_ident; 866 690 RefPtr<ArgumentsNode> m_args; … … 869 693 }; 870 694 871 class LocalVarFunctionCallNode : public FunctionCallResolveNode {872 public:873 LocalVarFunctionCallNode(int i) KJS_FAST_CALL874 : FunctionCallResolveNode(PlacementNewAdopt)875 {876 ASSERT(i != missingSymbolMarker());877 m_index = i;878 }879 880 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;881 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;882 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;883 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;884 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;885 886 private:887 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);888 };889 890 class ScopedVarFunctionCallNode : public FunctionCallResolveNode {891 public:892 ScopedVarFunctionCallNode(int i, size_t depth) KJS_FAST_CALL893 : FunctionCallResolveNode(PlacementNewAdopt)894 {895 ASSERT(i != missingSymbolMarker());896 m_index = i;897 m_scopeDepth = depth;898 }899 900 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;901 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;902 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;903 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;904 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;905 906 private:907 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);908 };909 910 class NonLocalVarFunctionCallNode : public FunctionCallResolveNode {911 public:912 NonLocalVarFunctionCallNode(size_t depth) KJS_FAST_CALL913 : FunctionCallResolveNode(PlacementNewAdopt)914 {915 m_scopeDepth = depth;916 }917 918 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;919 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;920 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;921 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;922 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;923 924 private:925 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);926 };927 928 695 class FunctionCallBracketNode : public ExpressionNode { 929 696 public: … … 936 703 937 704 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 938 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;939 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;940 705 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 941 706 virtual Precedence precedence() const { return PrecCall; } … … 957 722 958 723 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 959 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;960 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;961 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;962 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;963 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;964 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;965 724 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 966 725 virtual Precedence precedence() const { return PrecCall; } 967 726 968 727 private: 969 ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);970 971 728 RefPtr<ExpressionNode> m_base; 972 729 Identifier m_ident; … … 1006 763 1007 764 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1008 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1009 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1010 765 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1011 766 virtual Precedence precedence() const { return PrecPostfix; } 1012 virtual void optimizeForUnnecessaryResult();1013 };1014 1015 class PostIncLocalVarNode : public PostIncResolveNode {1016 public:1017 PostIncLocalVarNode(int i) KJS_FAST_CALL1018 : PostIncResolveNode(PlacementNewAdopt)1019 {1020 ASSERT(i != missingSymbolMarker());1021 m_index = i;1022 }1023 1024 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1025 virtual void optimizeForUnnecessaryResult();1026 };1027 1028 class PostIncConstNode : public PostIncResolveNode {1029 public:1030 PostIncConstNode(int i) KJS_FAST_CALL1031 : PostIncResolveNode(PlacementNewAdopt)1032 {1033 ASSERT(i != missingSymbolMarker());1034 m_index = i;1035 }1036 1037 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1038 767 }; 1039 768 … … 1052 781 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1053 782 1054 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1055 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1056 783 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1057 784 virtual Precedence precedence() const { return PrecPostfix; } 1058 virtual void optimizeForUnnecessaryResult();1059 };1060 1061 class PostDecLocalVarNode : public PostDecResolveNode {1062 public:1063 PostDecLocalVarNode(int i) KJS_FAST_CALL1064 : PostDecResolveNode(PlacementNewAdopt)1065 {1066 ASSERT(i != missingSymbolMarker());1067 m_index = i;1068 }1069 1070 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1071 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1072 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1073 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1074 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1075 virtual void optimizeForUnnecessaryResult();1076 1077 private:1078 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1079 };1080 1081 class PostDecConstNode : public PostDecResolveNode {1082 public:1083 PostDecConstNode(int i) KJS_FAST_CALL1084 : PostDecResolveNode(PlacementNewAdopt)1085 {1086 ASSERT(i != missingSymbolMarker());1087 m_index = i;1088 }1089 1090 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1091 785 }; 1092 786 … … 1099 793 } 1100 794 1101 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1102 795 virtual Precedence precedence() const { return PrecPostfix; } 1103 796 … … 1116 809 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1117 810 1118 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1119 811 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1120 812 }; … … 1129 821 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1130 822 1131 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1132 823 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1133 824 }; … … 1141 832 } 1142 833 1143 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1144 834 virtual Precedence precedence() const { return PrecPostfix; } 1145 835 … … 1158 848 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1159 849 1160 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1161 850 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1162 851 }; … … 1171 860 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1172 861 1173 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1174 862 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1175 863 }; … … 1184 872 1185 873 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1186 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1187 874 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1188 875 virtual Precedence precedence() const { return PrecPostfix; } … … 1208 895 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1209 896 1210 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1211 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1212 897 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1213 898 virtual Precedence precedence() const { return PrecUnary; } … … 1215 900 private: 1216 901 Identifier m_ident; 1217 };1218 1219 class LocalVarDeleteNode : public DeleteResolveNode {1220 public:1221 LocalVarDeleteNode() KJS_FAST_CALL1222 : DeleteResolveNode(PlacementNewAdopt)1223 {1224 }1225 1226 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1227 902 }; 1228 903 … … 1237 912 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1238 913 1239 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1240 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1241 914 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1242 915 virtual Precedence precedence() const { return PrecUnary; } … … 1257 930 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1258 931 1259 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1260 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1261 932 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1262 933 virtual Precedence precedence() const { return PrecUnary; } … … 1276 947 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1277 948 1278 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1279 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1280 949 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1281 950 virtual Precedence precedence() const { return PrecUnary; } … … 1294 963 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1295 964 1296 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1297 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1298 965 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1299 966 virtual Precedence precedence() const { return PrecUnary; } … … 1320 987 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1321 988 1322 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1323 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1324 989 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1325 990 virtual Precedence precedence() const { return PrecUnary; } … … 1332 997 }; 1333 998 1334 class LocalVarTypeOfNode : public TypeOfResolveNode {1335 public:1336 LocalVarTypeOfNode(int i) KJS_FAST_CALL1337 : TypeOfResolveNode(PlacementNewAdopt)1338 {1339 m_expectedReturnType = StringType;1340 ASSERT(i != missingSymbolMarker());1341 m_index = i;1342 }1343 1344 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1345 };1346 1347 999 class TypeOfValueNode : public ExpressionNode { 1348 1000 public: … … 1355 1007 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1356 1008 1357 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1358 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1359 1009 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1360 1010 virtual Precedence precedence() const { return PrecUnary; } … … 1378 1028 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1379 1029 1380 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1381 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1382 1030 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1383 1031 virtual Precedence precedence() const { return PrecUnary; } 1384 };1385 1386 class PreIncLocalVarNode : public PreIncResolveNode {1387 public:1388 PreIncLocalVarNode(int i) KJS_FAST_CALL1389 : PreIncResolveNode(PlacementNewAdopt)1390 {1391 ASSERT(i != missingSymbolMarker());1392 m_index = i;1393 }1394 1395 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1396 };1397 1398 class PreIncConstNode : public PreIncResolveNode {1399 public:1400 PreIncConstNode(int i) KJS_FAST_CALL1401 : PreIncResolveNode(PlacementNewAdopt)1402 {1403 ASSERT(i != missingSymbolMarker());1404 m_index = i;1405 }1406 1407 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1408 1032 }; 1409 1033 … … 1422 1046 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1423 1047 1424 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1425 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1426 1048 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1427 1049 virtual Precedence precedence() const { return PrecUnary; } 1428 };1429 1430 class PreDecLocalVarNode : public PreDecResolveNode {1431 public:1432 PreDecLocalVarNode(int i) KJS_FAST_CALL1433 : PreDecResolveNode(PlacementNewAdopt)1434 {1435 ASSERT(i != missingSymbolMarker());1436 m_index = i;1437 }1438 1439 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1440 };1441 1442 class PreDecConstNode : public PreDecResolveNode {1443 public:1444 PreDecConstNode(int i) KJS_FAST_CALL1445 : PreDecResolveNode(PlacementNewAdopt)1446 {1447 ASSERT(i != missingSymbolMarker());1448 m_index = i;1449 }1450 1451 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1452 1050 }; 1453 1051 … … 1460 1058 } 1461 1059 1462 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1463 1060 virtual Precedence precedence() const { return PrecUnary; } 1464 1061 … … 1477 1074 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1478 1075 1479 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1480 1076 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1481 1077 }; … … 1490 1086 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1491 1087 1492 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1493 1088 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1494 1089 }; … … 1502 1097 } 1503 1098 1504 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1505 1099 virtual Precedence precedence() const { return PrecPostfix; } 1506 1100 … … 1519 1113 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1520 1114 1521 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1522 1115 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1523 1116 }; … … 1532 1125 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1533 1126 1534 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1535 1127 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1536 1128 }; … … 1545 1137 1546 1138 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1547 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1548 1139 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1549 1140 virtual Precedence precedence() const { return PrecUnary; } … … 1563 1154 1564 1155 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1565 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1566 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1567 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1568 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1569 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1570 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1571 1156 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1572 1157 virtual Precedence precedence() const { return PrecUnary; } … … 1585 1170 1586 1171 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1587 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1588 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1589 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1590 1172 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1591 1173 virtual Precedence precedence() const { return PrecUnary; } … … 1604 1186 1605 1187 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1606 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1607 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1608 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1609 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1610 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1611 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1612 1188 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1613 1189 virtual Precedence precedence() const { return PrecUnary; } 1614 1190 1615 1191 private: 1616 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);1617 1618 1192 RefPtr<ExpressionNode> m_expr; 1619 1193 }; … … 1628 1202 1629 1203 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1630 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1631 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1632 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1633 1204 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1634 1205 virtual Precedence precedence() const { return PrecUnary; } … … 1648 1219 1649 1220 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1650 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1651 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1652 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1653 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1654 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1655 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1656 1221 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1657 1222 virtual Precedence precedence() const { return PrecMultiplicitave; } 1658 1223 1659 1224 private: 1660 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1661 1662 1225 RefPtr<ExpressionNode> m_term1; 1663 1226 RefPtr<ExpressionNode> m_term2; … … 1674 1237 1675 1238 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1676 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1677 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1678 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1679 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1680 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1681 1239 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1682 1240 virtual Precedence precedence() const { return PrecMultiplicitave; } 1683 1241 1684 1242 private: 1685 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1686 1687 1243 RefPtr<ExpressionNode> m_term1; 1688 1244 RefPtr<ExpressionNode> m_term2; … … 1699 1255 1700 1256 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1701 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1702 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1703 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1704 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1705 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1706 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1707 1257 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1708 1258 virtual Precedence precedence() const { return PrecMultiplicitave; } 1709 1259 1710 1260 private: 1711 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1712 1713 1261 RefPtr<ExpressionNode> m_term1; 1714 1262 RefPtr<ExpressionNode> m_term2; … … 1724 1272 1725 1273 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1726 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1727 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1728 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1729 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1730 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1731 1274 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1732 1275 virtual Precedence precedence() const { return PrecAdditive; } … … 1742 1285 RefPtr<ExpressionNode> m_term1; 1743 1286 RefPtr<ExpressionNode> m_term2; 1744 1745 private:1746 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1747 };1748 1749 class AddNumbersNode : public AddNode {1750 public:1751 AddNumbersNode(ExpressionNode* term1, ExpressionNode* term2) KJS_FAST_CALL1752 : AddNode(term1, term2, NumberType)1753 {1754 }1755 1756 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1757 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1758 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1759 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1760 1761 private:1762 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1763 };1764 1765 class AddStringLeftNode : public AddNode {1766 public:1767 AddStringLeftNode(ExpressionNode* term1, ExpressionNode* term2) KJS_FAST_CALL1768 : AddNode(term1, term2, StringType)1769 {1770 }1771 1772 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1773 };1774 1775 class AddStringRightNode : public AddNode {1776 public:1777 AddStringRightNode(ExpressionNode* term1, ExpressionNode* term2) KJS_FAST_CALL1778 : AddNode(term1, term2, StringType)1779 {1780 }1781 1782 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1783 };1784 1785 class AddStringsNode : public AddNode {1786 public:1787 AddStringsNode(ExpressionNode* term1, ExpressionNode* term2) KJS_FAST_CALL1788 : AddNode(term1, term2, StringType)1789 {1790 }1791 1792 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1793 1287 }; 1794 1288 … … 1803 1297 1804 1298 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1805 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1806 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1807 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1808 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1809 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1810 1299 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1811 1300 virtual Precedence precedence() const { return PrecAdditive; } 1812 1301 1813 1302 private: 1814 ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);1815 1816 1303 RefPtr<ExpressionNode> m_term1; 1817 1304 RefPtr<ExpressionNode> m_term2; … … 1828 1315 1829 1316 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1830 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1831 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1832 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1833 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1834 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1835 1317 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1836 1318 virtual Precedence precedence() const { return PrecShift; } 1837 1319 1838 1320 private: 1839 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);1840 1841 1321 RefPtr<ExpressionNode> m_term1; 1842 1322 RefPtr<ExpressionNode> m_term2; … … 1853 1333 1854 1334 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1855 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1856 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1857 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1858 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1859 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1860 1335 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1861 1336 virtual Precedence precedence() const { return PrecShift; } 1862 1337 1863 1338 private: 1864 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);1865 1866 1339 RefPtr<ExpressionNode> m_term1; 1867 1340 RefPtr<ExpressionNode> m_term2; … … 1878 1351 1879 1352 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1880 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1881 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1882 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;1883 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;1884 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;1885 1353 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1886 1354 virtual Precedence precedence() const { return PrecShift; } 1887 private: 1888 ALWAYS_INLINE uint32_t inlineEvaluateToUInt32(OldInterpreterExecState*); 1889 1355 1356 private: 1890 1357 RefPtr<ExpressionNode> m_term1; 1891 1358 RefPtr<ExpressionNode> m_term2; … … 1902 1369 1903 1370 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1904 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1905 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1906 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1907 1371 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1908 1372 virtual Precedence precedence() const { return PrecRelational; } 1909 1910 private:1911 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);1912 1373 1913 1374 protected: … … 1916 1377 }; 1917 1378 1918 class LessNumbersNode : public LessNode {1919 public:1920 LessNumbersNode(ExpressionNode* expr1, ExpressionNode* expr2) KJS_FAST_CALL1921 : LessNode(expr1, expr2)1922 {1923 }1924 1925 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1926 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1927 1928 private:1929 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);1930 };1931 1932 class LessStringsNode : public LessNode {1933 public:1934 LessStringsNode(ExpressionNode* expr1, ExpressionNode* expr2) KJS_FAST_CALL1935 : LessNode(expr1, expr2)1936 {1937 }1938 1939 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1940 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1941 1942 private:1943 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);1944 };1945 1946 1379 class GreaterNode : public ExpressionNode { 1947 1380 public: … … 1953 1386 1954 1387 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1955 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1956 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1957 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1958 1388 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1959 1389 virtual Precedence precedence() const { return PrecRelational; } 1960 1390 1961 1391 private: 1962 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);1963 1964 1392 RefPtr<ExpressionNode> m_expr1; 1965 1393 RefPtr<ExpressionNode> m_expr2; … … 1975 1403 1976 1404 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1977 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;1978 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;1979 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;1980 1405 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1981 1406 virtual Precedence precedence() const { return PrecRelational; } 1982 1407 1983 1408 private: 1984 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);1985 1986 1409 RefPtr<ExpressionNode> m_expr1; 1987 1410 RefPtr<ExpressionNode> m_expr2; … … 1997 1420 1998 1421 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1999 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2000 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2001 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2002 1422 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2003 1423 virtual Precedence precedence() const { return PrecRelational; } 2004 1424 2005 1425 private: 2006 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2007 2008 1426 RefPtr<ExpressionNode> m_expr1; 2009 1427 RefPtr<ExpressionNode> m_expr2; … … 2020 1438 2021 1439 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2022 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2023 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2024 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2025 1440 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2026 1441 virtual Precedence precedence() const { return PrecRelational; } … … 2041 1456 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2042 1457 2043 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2044 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2045 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2046 1458 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2047 1459 virtual Precedence precedence() const { return PrecRelational; } … … 2062 1474 2063 1475 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2064 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2065 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2066 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2067 1476 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2068 1477 virtual Precedence precedence() const { return PrecEquality; } 2069 1478 2070 1479 private: 2071 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2072 2073 1480 RefPtr<ExpressionNode> m_expr1; 2074 1481 RefPtr<ExpressionNode> m_expr2; … … 2085 1492 2086 1493 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2087 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2088 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2089 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2090 1494 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2091 1495 virtual Precedence precedence() const { return PrecEquality; } 2092 1496 2093 1497 private: 2094 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2095 2096 1498 RefPtr<ExpressionNode> m_expr1; 2097 1499 RefPtr<ExpressionNode> m_expr2; … … 2108 1510 2109 1511 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2110 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2111 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2112 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2113 1512 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2114 1513 virtual Precedence precedence() const { return PrecEquality; } 2115 1514 2116 1515 private: 2117 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2118 2119 1516 RefPtr<ExpressionNode> m_expr1; 2120 1517 RefPtr<ExpressionNode> m_expr2; … … 2131 1528 2132 1529 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2133 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2134 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2135 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2136 1530 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2137 1531 virtual Precedence precedence() const { return PrecEquality; } 2138 1532 2139 1533 private: 2140 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2141 2142 1534 RefPtr<ExpressionNode> m_expr1; 2143 1535 RefPtr<ExpressionNode> m_expr2; … … 2154 1546 2155 1547 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2156 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2157 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2158 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;2159 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2160 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;2161 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;2162 1548 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2163 1549 virtual Precedence precedence() const { return PrecBitwiseAnd; } 2164 1550 2165 1551 private: 2166 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);2167 2168 1552 RefPtr<ExpressionNode> m_expr1; 2169 1553 RefPtr<ExpressionNode> m_expr2; … … 2180 1564 2181 1565 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2182 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2183 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2184 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;2185 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2186 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;2187 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;2188 1566 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2189 1567 virtual Precedence precedence() const { return PrecBitwiseOr; } 2190 1568 2191 1569 private: 2192 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);2193 2194 1570 RefPtr<ExpressionNode> m_expr1; 2195 1571 RefPtr<ExpressionNode> m_expr2; … … 2206 1582 2207 1583 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2208 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2209 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2210 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;2211 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2212 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;2213 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;2214 1584 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2215 1585 virtual Precedence precedence() const { return PrecBitwiseXor; } 2216 1586 2217 1587 private: 2218 ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);2219 2220 1588 RefPtr<ExpressionNode> m_expr1; 2221 1589 RefPtr<ExpressionNode> m_expr2; … … 2235 1603 2236 1604 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2237 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2238 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2239 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2240 1605 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2241 1606 virtual Precedence precedence() const { return PrecLogicalAnd; } 2242 1607 2243 1608 private: 2244 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2245 2246 1609 RefPtr<ExpressionNode> m_expr1; 2247 1610 RefPtr<ExpressionNode> m_expr2; … … 2258 1621 2259 1622 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2260 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2261 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2262 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2263 1623 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2264 1624 virtual Precedence precedence() const { return PrecLogicalOr; } 2265 1625 2266 1626 private: 2267 ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);2268 2269 1627 RefPtr<ExpressionNode> m_expr1; 2270 1628 RefPtr<ExpressionNode> m_expr2; … … 2284 1642 2285 1643 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2286 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2287 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2288 virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;2289 virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;2290 virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;2291 virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;2292 1644 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2293 1645 virtual Precedence precedence() const { return PrecConditional; } … … 2319 1671 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2320 1672 2321 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2322 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2323 1673 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2324 1674 virtual Precedence precedence() const { return PrecAssignment; } … … 2332 1682 }; 2333 1683 2334 class ReadModifyLocalVarNode : public ReadModifyResolveNode {2335 public:2336 ReadModifyLocalVarNode(int i) KJS_FAST_CALL2337 : ReadModifyResolveNode(PlacementNewAdopt)2338 {2339 ASSERT(i != missingSymbolMarker());2340 m_index = i;2341 }2342 2343 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2344 };2345 2346 class ReadModifyConstNode : public ReadModifyResolveNode {2347 public:2348 ReadModifyConstNode(int i) KJS_FAST_CALL2349 : ReadModifyResolveNode(PlacementNewAdopt)2350 {2351 ASSERT(i != missingSymbolMarker());2352 m_index = i;2353 }2354 2355 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2356 };2357 2358 1684 class AssignResolveNode : public ExpressionNode { 2359 1685 public: … … 2374 1700 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2375 1701 2376 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2377 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2378 1702 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2379 1703 virtual Precedence precedence() const { return PrecAssignment; } … … 2384 1708 size_t m_index; // Used by ReadModifyLocalVarNode. 2385 1709 bool m_rightHasAssignments; 2386 };2387 2388 class AssignLocalVarNode : public AssignResolveNode {2389 public:2390 AssignLocalVarNode(int i) KJS_FAST_CALL2391 : AssignResolveNode(PlacementNewAdopt)2392 {2393 ASSERT(i != missingSymbolMarker());2394 m_index = i;2395 }2396 2397 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2398 };2399 2400 class AssignConstNode : public AssignResolveNode {2401 public:2402 AssignConstNode() KJS_FAST_CALL2403 : AssignResolveNode(PlacementNewAdopt)2404 {2405 }2406 2407 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2408 1710 }; 2409 1711 … … 2422 1724 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2423 1725 2424 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2425 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2426 1726 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2427 1727 virtual Precedence precedence() const { return PrecAssignment; } … … 2449 1749 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2450 1750 2451 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2452 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2453 1751 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2454 1752 virtual Precedence precedence() const { return PrecAssignment; } … … 2473 1771 2474 1772 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2475 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2476 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2477 1773 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2478 1774 virtual Precedence precedence() const { return PrecAssignment; } … … 2498 1794 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2499 1795 2500 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2501 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2502 1796 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2503 1797 virtual Precedence precedence() const { return PrecAssignment; } … … 2521 1815 2522 1816 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2523 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2524 1817 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2525 1818 virtual Precedence precedence() const { return PrecAssignment; } … … 2537 1830 , m_expr2(expr2) 2538 1831 { 2539 m_expr1->optimizeForUnnecessaryResult(); 2540 } 2541 2542 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2543 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2544 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL; 1832 } 1833 1834 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2545 1835 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2546 1836 virtual Precedence precedence() const { return PrecExpression; } … … 2564 1854 ConstDeclNode(const Identifier& ident, ExpressionNode* in) KJS_FAST_CALL; 2565 1855 2566 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2567 virtual KJS::JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;2568 void evaluateSingle(OldInterpreterExecState*) KJS_FAST_CALL;2569 1856 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2570 1857 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 2577 1864 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2578 1865 virtual RegisterID* emitCodeSingle(CodeGenerator&) KJS_FAST_CALL; 2579 private:2580 void handleSlowCase(OldInterpreterExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;2581 1866 }; 2582 1867 … … 2588 1873 } 2589 1874 2590 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2591 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2592 1875 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2593 1876 2594 1877 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 1878 2595 1879 private: 2596 1880 RefPtr<ConstDeclNode> m_next; … … 2617 1901 2618 1902 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2619 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2620 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2621 1903 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2622 1904 … … 2635 1917 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2636 1918 2637 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2638 1919 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2639 1920 virtual bool isEmptyStatement() const KJS_FAST_CALL { return true; } … … 2660 1941 2661 1942 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2662 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2663 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2664 1943 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2665 1944 … … 2677 1956 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2678 1957 2679 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2680 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2681 1958 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2682 1959 … … 2694 1971 2695 1972 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2696 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2697 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2698 1973 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2699 1974 … … 2712 1987 2713 1988 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2714 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2715 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2716 1989 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2717 1990 … … 2729 2002 2730 2003 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2731 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2732 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2733 2004 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2734 2005 … … 2747 2018 2748 2019 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2749 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2750 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2751 2020 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2752 2021 … … 2759 2028 public: 2760 2029 ForNode(ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl) KJS_FAST_CALL 2761 : m_expr1(expr1 ? expr1 : new PlaceholderTrueNode)2762 , m_expr2(expr2 ? expr2 : new PlaceholderTrueNode)2763 , m_expr3(expr3 ? expr3 : new PlaceholderTrueNode)2030 : m_expr1(expr1) 2031 , m_expr2(expr2) 2032 , m_expr3(expr3) 2764 2033 , m_statement(statement) 2765 2034 , m_expr1WasVarDecl(expr1 && expr1WasVarDecl) 2766 2035 { 2767 ASSERT(m_expr1);2768 ASSERT(m_expr2);2769 ASSERT(m_expr3);2770 2036 ASSERT(statement); 2771 2772 m_expr1->optimizeForUnnecessaryResult(); 2773 m_expr3->optimizeForUnnecessaryResult(); 2774 } 2775 2776 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2777 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2778 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL; 2037 } 2038 2039 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2779 2040 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2780 2041 … … 2793 2054 2794 2055 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2795 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2796 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2797 2056 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2798 2057 … … 2818 2077 2819 2078 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2820 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2821 2079 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2822 2080 … … 2837 2095 2838 2096 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2839 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2840 2097 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2841 2098 … … 2852 2109 2853 2110 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2854 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2855 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2856 2111 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2857 2112 virtual bool isReturnNode() const KJS_FAST_CALL { return true; } … … 2870 2125 2871 2126 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2872 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2873 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2874 2127 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2875 2128 … … 2888 2141 2889 2142 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2890 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2891 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2892 2143 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2893 2144 virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_statement->pushLabel(ident); } … … 2906 2157 2907 2158 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 2908 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2909 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2910 2159 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2911 2160 … … 2924 2173 } 2925 2174 2926 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;2927 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2928 2175 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 2929 2176 … … 2978 2225 2979 2226 protected: 2980 void optimizeVariableAccess(OldInterpreterExecState*) KJS_FAST_CALL;2981 2982 2227 VarStack m_varStack; 2983 2228 FunctionStack m_functionStack; … … 2995 2240 virtual ~ProgramNode(); 2996 2241 2997 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;2998 2999 2242 ProgramCodeBlock& code(ScopeChainNode* scopeChain, bool canCreateGlobals) KJS_FAST_CALL 3000 2243 { … … 3010 2253 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 3011 2254 3012 void initializeSymbolTable(OldInterpreterExecState*) KJS_FAST_CALL;3013 ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;3014 3015 2255 Vector<size_t> m_varIndexes; // Storage indexes belonging to the nodes in m_varStack. (Recorded to avoid double lookup.) 3016 2256 Vector<size_t> m_functionIndexes; // Storage indexes belonging to the nodes in m_functionStack. (Recorded to avoid double lookup.) … … 3024 2264 virtual ~EvalNode(); 3025 2265 3026 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;3027 3028 2266 EvalCodeBlock& code(ScopeChainNode* scopeChain) KJS_FAST_CALL 3029 2267 { … … 3036 2274 EvalNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL; 3037 2275 3038 ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;3039 2276 void generateCode(ScopeChainNode*) KJS_FAST_CALL; 3040 2277 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; … … 3099 2336 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 3100 2337 FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL; 3101 virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;3102 2338 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3103 2339 virtual Precedence precedence() const { return PrecMember; } … … 3129 2365 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 3130 2366 3131 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;3132 2367 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3133 2368 FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL; … … 3158 2393 } 3159 2394 3160 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;3161 2395 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3162 2396 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } 3163 3164 JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;3165 JSValue* executeStatements(OldInterpreterExecState*) KJS_FAST_CALL;3166 2397 3167 2398 ExpressionNode* expr() const { return m_expr.get(); } … … 3186 2417 } 3187 2418 3188 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;3189 2419 CaseClauseNode* getClause() const KJS_FAST_CALL { return m_clause.get(); } 3190 2420 ClauseListNode* getNext() const KJS_FAST_CALL { return m_next.get(); } … … 3210 2440 RegisterID* emitCodeForBlock(CodeGenerator&, RegisterID* input, RegisterID* dst = 0) KJS_FAST_CALL; 3211 2441 3212 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;3213 JSValue* executeBlock(OldInterpreterExecState*, JSValue *input) KJS_FAST_CALL;3214 2442 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3215 2443 virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; } … … 3231 2459 virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL; 3232 2460 3233 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;3234 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;3235 2461 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3236 2462 … … 3244 2470 BreakpointCheckStatement(PassRefPtr<StatementNode>) KJS_FAST_CALL; 3245 2471 3246 virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL; 3247 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3248 virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL; 2472 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 3249 2473 3250 2474 private:
Note:
See TracChangeset
for help on using the changeset viewer.