Changeset 27394 in webkit for trunk/JavaScriptCore/kjs/nodes.h


Ignore:
Timestamp:
Nov 3, 2007, 3:09:45 AM (18 years ago)
Author:
mjs
Message:

Reviewed by Oliver.


  • remove VarDeclListNode and simplify VarDeclNode evaluation for 0.4% SunSpider speedup
  • kjs/grammar.y:
  • kjs/nodes.cpp: (KJS::VarDeclNode::optimizeVariableAccess): (KJS::VarDeclNode::getDeclarations): (KJS::VarDeclNode::handleSlowCase): (KJS::VarDeclNode::evaluateSingle): (KJS::VarDeclNode::evaluate): (KJS::VarStatementNode::execute):
  • kjs/nodes.h: (KJS::VarDeclNode::): (KJS::VarStatementNode::):
  • kjs/nodes2string.cpp: (KJS::VarDeclNode::streamTo):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/nodes.h

    r27389 r27394  
    14651465    VarDeclNode(const Identifier &id, AssignExprNode *in, Type t) KJS_FAST_CALL;
    14661466    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
    1467     JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1467    virtual KJS::JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1468    void evaluateSingle(ExecState*) KJS_FAST_CALL;
    14681469    virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14691470    virtual void getDeclarations(DeclarationStacks&) KJS_FAST_CALL;
    14701471    virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
     1472    PassRefPtr<VarDeclNode> releaseNext() KJS_FAST_CALL { return next.release(); }
     1473
    14711474    Type varType;
    14721475    Identifier ident;
    1473   private:
    1474     JSValue* handleSlowCase(ExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL KJS_NO_INLINE;
     1476    ListRefPtr<VarDeclNode> next;
     1477  private:
     1478    void handleSlowCase(ExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL KJS_NO_INLINE;
    14751479    RefPtr<AssignExprNode> init;
    14761480  };
    14771481
    1478   class VarDeclListNode : public Node {
    1479   public:
    1480     VarDeclListNode(VarDeclNode* v) KJS_FAST_CALL : var(v) { m_mayHaveDeclarations = true; }
    1481     VarDeclListNode(VarDeclListNode* l, VarDeclNode* v) KJS_FAST_CALL
    1482       : var(v) { l->next = this; m_mayHaveDeclarations = true; }
    1483     virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
    1484     JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1485     virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    1486     PassRefPtr<VarDeclListNode> releaseNext() KJS_FAST_CALL { return next.release(); }
     1482  class VarStatementNode : public StatementNode {
     1483  public:
     1484    VarStatementNode(VarDeclNode* l) KJS_FAST_CALL : next(l) { m_mayHaveDeclarations = true; }
     1485    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
     1486    virtual Completion execute(ExecState*) KJS_FAST_CALL;
     1487    virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14871488    virtual void getDeclarations(DeclarationStacks&) KJS_FAST_CALL;
    1488     virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    1489   private:
    1490     friend class ForNode;
    1491     friend class VarStatementNode;
    1492     ListRefPtr<VarDeclListNode> next;
    1493     RefPtr<VarDeclNode> var;
    1494   };
    1495 
    1496   class VarStatementNode : public StatementNode {
    1497   public:
    1498     VarStatementNode(VarDeclListNode* l) KJS_FAST_CALL : next(l) { m_mayHaveDeclarations = true; }
    1499     virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
    1500     virtual Completion execute(ExecState*) KJS_FAST_CALL;
    1501     virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    1502     virtual void getDeclarations(DeclarationStacks&) KJS_FAST_CALL;
    1503   private:
    1504     RefPtr<VarDeclListNode> next;
     1489  private:
     1490    RefPtr<VarDeclNode> next;
    15051491  };
    15061492
     
    18591845
    18601846  struct VarDeclList {
    1861       VarDeclListNode* head;
    1862       VarDeclListNode* tail;
     1847      VarDeclNode* head;
     1848      VarDeclNode* tail;
    18631849  };
    18641850
Note: See TracChangeset for help on using the changeset viewer.