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


Ignore:
Timestamp:
Apr 9, 2006, 10:06:35 PM (19 years ago)
Author:
ggaren
Message:

Reviewed by eric.

This patch switches manual RefPtr exchange with use of
RefPtr::release to ensure that a node's ref count never tops 1
(in the normal case).

  • kjs/nodes.cpp: (BlockNode::BlockNode): (CaseBlockNode::CaseBlockNode):
  • kjs/nodes.h: (KJS::ArrayNode::ArrayNode): (KJS::ObjectLiteralNode::ObjectLiteralNode): (KJS::ArgumentsNode::ArgumentsNode): (KJS::VarStatementNode::VarStatementNode): (KJS::ForNode::ForNode): (KJS::CaseClauseNode::CaseClauseNode): (KJS::FuncExprNode::FuncExprNode): (KJS::FuncDeclNode::FuncDeclNode):
File:
1 edited

Legend:

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

    r13593 r13752  
    234234    ArrayNode(int e) : elision(e), opt(true) { }
    235235    ArrayNode(ElementNode *ele)
    236       : element(ele->next), elision(0), opt(false) { Parser::removeNodeCycle(element.get()); ele->next = 0; }
     236      : element(ele->next.release()), elision(0), opt(false) { Parser::removeNodeCycle(element.get()); }
    237237    ArrayNode(int eli, ElementNode *ele)
    238       : element(ele->next), elision(eli), opt(true) { Parser::removeNodeCycle(element.get()); ele->next = 0; }
     238      : element(ele->next.release()), elision(eli), opt(true) { Parser::removeNodeCycle(element.get()); }
    239239    JSValue* evaluate(ExecState*);
    240240    virtual void streamTo(SourceStream&) const;
     
    290290  public:
    291291    ObjectLiteralNode() { }
    292     ObjectLiteralNode(PropertyListNode *l) : list(l->next) { Parser::removeNodeCycle(list.get()); l->next = 0; }
     292    ObjectLiteralNode(PropertyListNode *l) : list(l->next.release()) { Parser::removeNodeCycle(list.get()); }
    293293    JSValue* evaluate(ExecState*);
    294294    virtual void streamTo(SourceStream&) const;
     
    350350    ArgumentsNode() { }
    351351    ArgumentsNode(ArgumentListNode *l)
    352       : list(l->next) { Parser::removeNodeCycle(list.get()); l->next = 0; }
     352      : list(l->next.release()) { Parser::removeNodeCycle(list.get()); }
    353353    JSValue* evaluate(ExecState*);
    354354    List evaluateList(ExecState *exec) { return list ? list->evaluateList(exec) : List(); }
     
    794794  class VarStatementNode : public StatementNode {
    795795  public:
    796     VarStatementNode(VarDeclListNode *l) : next(l->next) { Parser::removeNodeCycle(next.get()); l->next = 0; }
     796    VarStatementNode(VarDeclListNode *l) : next(l->next.release()) { Parser::removeNodeCycle(next.get()); }
    797797    virtual Completion execute(ExecState*);
    798798    virtual void processVarDecls(ExecState*);
     
    868868      expr1(e1), expr2(e2), expr3(e3), statement(s) {}
    869869    ForNode(VarDeclListNode *e1, Node *e2, Node *e3, StatementNode *s) :
    870       expr1(e1->next), expr2(e2), expr3(e3), statement(s) { Parser::removeNodeCycle(expr1.get()); e1->next = 0; }
     870      expr1(e1->next.release()), expr2(e2), expr3(e3), statement(s) { Parser::removeNodeCycle(expr1.get()); }
    871871    virtual Completion execute(ExecState*);
    872872    virtual void processVarDecls(ExecState*);
     
    939939    CaseClauseNode(Node *e) : expr(e) { }
    940940    CaseClauseNode(Node *e, StatListNode *l)
    941       : expr(e), next(l->next) { Parser::removeNodeCycle(next.get()); l->next = 0; }
     941      : expr(e), next(l->next.release()) { Parser::removeNodeCycle(next.get()); }
    942942    JSValue* evaluate(ExecState*);
    943943    Completion evalStatements(ExecState*);
     
    10601060  public:
    10611061    FuncExprNode(const Identifier &i, FunctionBodyNode *b, ParameterNode *p = 0)
    1062       : ident(i), param(p ? p->next : 0), body(b) { if (p) { Parser::removeNodeCycle(param.get()); p->next = 0; } }
     1062      : ident(i), param(p ? p->next.release() : 0), body(b) { if (p) { Parser::removeNodeCycle(param.get()); } }
    10631063    virtual JSValue *evaluate(ExecState*);
    10641064    virtual void streamTo(SourceStream&) const;
     
    10761076      : ident(i), body(b) { }
    10771077    FuncDeclNode(const Identifier &i, ParameterNode *p, FunctionBodyNode *b)
    1078       : ident(i), param(p->next), body(b) { Parser::removeNodeCycle(param.get()); p->next = 0; }
     1078      : ident(i), param(p->next.release()), body(b) { Parser::removeNodeCycle(param.get()); }
    10791079    virtual Completion execute(ExecState*);
    10801080    virtual void processFuncDecl(ExecState*);
Note: See TracChangeset for help on using the changeset viewer.