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


Ignore:
Timestamp:
Oct 29, 2007, 10:36:24 PM (18 years ago)
Author:
oliver
Message:

Debranching remaining assignment nodes, and miscellaneous cleanup

Reviewed by Maciej.

Split read-modify code paths out of AssignBracketNode and AssignDotNode
Removed now unnecessary check for write-only assignment in ReadModifyLocalVarNode
and ReadModifyResolveNode evaluate methods

Leads to a 1% gain in SunSpider.

File:
1 edited

Legend:

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

    r27252 r27255  
    13661366  };
    13671367
    1368   class AssignBracketNode : public Node {
    1369   public:
    1370     AssignBracketNode(Node *base, Node *subscript, Operator oper, Node *right) KJS_FAST_CALL
     1368  class ReadModifyBracketNode : public Node {
     1369  public:
     1370    ReadModifyBracketNode(Node *base, Node *subscript, Operator oper, Node *right) KJS_FAST_CALL
    13711371      : m_base(base), m_subscript(subscript), m_oper(oper), m_right(right) {}
    13721372    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
     
    13811381  };
    13821382
     1383  class AssignBracketNode : public Node {
     1384  public:
     1385    AssignBracketNode(Node *base, Node *subscript, Node *right) KJS_FAST_CALL
     1386      : m_base(base), m_subscript(subscript), m_right(right) {}
     1387    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
     1388    JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1389    virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     1390    virtual Precedence precedence() const { return PrecAssignment; }
     1391  protected:
     1392    RefPtr<Node> m_base;
     1393    RefPtr<Node> m_subscript;
     1394    RefPtr<Node> m_right;
     1395  };
     1396
    13831397  class AssignDotNode : public Node {
    13841398  public:
    1385     AssignDotNode(Node *base, const Identifier& ident, Operator oper, Node *right) KJS_FAST_CALL
     1399    AssignDotNode(Node *base, const Identifier& ident, Node *right) KJS_FAST_CALL
     1400      : m_base(base), m_ident(ident), m_right(right) {}
     1401    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
     1402    JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1403    virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     1404    virtual Precedence precedence() const { return PrecAssignment; }
     1405  protected:
     1406    RefPtr<Node> m_base;
     1407    Identifier m_ident;
     1408    RefPtr<Node> m_right;
     1409  };
     1410
     1411  class ReadModifyDotNode : public Node {
     1412  public:
     1413    ReadModifyDotNode(Node *base, const Identifier& ident, Operator oper, Node *right) KJS_FAST_CALL
    13861414      : m_base(base), m_ident(ident), m_oper(oper), m_right(right) {}
    13871415    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;
Note: See TracChangeset for help on using the changeset viewer.