Ignore:
Timestamp:
Sep 19, 2015, 8:36:46 AM (10 years ago)
Author:
[email protected]
Message:

VariableEnvironmentNode should inherit from ParserArenaDeletable because VariableEnvironment's must have their destructors run
https://bugs.webkit.org/show_bug.cgi?id=149359

Reviewed by Andreas Kling.

VariableEnvironment must have its destructor run.
Therefore, VariableEnvironmentNode should inherit from ParserArenaDeletable.
Also, anything that inherits from VariableEnvironmentNode must use
ParserArenaDeletable's operator new. Also, any other nodes that own
a VariableEnvironment must also have their destructors run.

  • parser/Nodes.h:

(JSC::VariableEnvironmentNode::VariableEnvironmentNode):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/parser/Nodes.h

    r189819 r190014  
    210210    };
    211211
    212     class VariableEnvironmentNode {
     212    class VariableEnvironmentNode : public ParserArenaDeletable {
    213213    public:
    214214        VariableEnvironmentNode()
     
    12871287    class BlockNode : public StatementNode, public VariableEnvironmentNode {
    12881288    public:
     1289        using ParserArenaDeletable::operator new;
     1290
    12891291        BlockNode(const JSTokenLocation&, SourceElements*, VariableEnvironment&);
    12901292
     
    13991401    class ForNode : public StatementNode, public VariableEnvironmentNode {
    14001402    public:
     1403        using ParserArenaDeletable::operator new;
     1404
    14011405        ForNode(const JSTokenLocation&, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode*, VariableEnvironment&);
    14021406
     
    14141418    class EnumerationNode : public StatementNode, public ThrowableExpressionData, public VariableEnvironmentNode {
    14151419    public:
     1420        using ParserArenaDeletable::operator new;
     1421
    14161422        EnumerationNode(const JSTokenLocation&, ExpressionNode*, ExpressionNode*, StatementNode*, VariableEnvironment&);
    14171423       
     
    15141520    };
    15151521
    1516     class TryNode : public StatementNode {
    1517     public:
     1522    class TryNode : public StatementNode, public VariableEnvironmentNode {
     1523    public:
     1524        using ParserArenaDeletable::operator new;
     1525
    15181526        TryNode(const JSTokenLocation&, StatementNode* tryBlock, const Identifier& exceptionIdent, StatementNode* catchBlock, VariableEnvironment& catchEnvironment, StatementNode* finallyBlock);
    15191527
     
    15251533        StatementNode* m_catchBlock;
    15261534        StatementNode* m_finallyBlock;
    1527         VariableEnvironment m_catchEnvironment;
    15281535    };
    15291536
     
    21132120    class SwitchNode : public StatementNode, public VariableEnvironmentNode {
    21142121    public:
     2122        using ParserArenaDeletable::operator new;
     2123
    21152124        SwitchNode(const JSTokenLocation&, ExpressionNode*, CaseBlockNode*, VariableEnvironment&);
    21162125
Note: See TracChangeset for help on using the changeset viewer.