⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodes.h

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 H
📖 第 1 页 / 共 5 页
字号:
        virtual ~ReadModifyBracketNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        RefPtr<ExpressionNode> m_subscript;        RefPtr<ExpressionNode> m_right;        Operator m_operator : 30;        bool m_subscriptHasAssignments : 1;        bool m_rightHasAssignments : 1;    };    class AssignBracketNode : public ExpressionNode, public ThrowableExpressionData {    public:        AssignBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_subscript(subscript)            , m_right(right)            , m_subscriptHasAssignments(subscriptHasAssignments)            , m_rightHasAssignments(rightHasAssignments)        {        }        virtual ~AssignBracketNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        RefPtr<ExpressionNode> m_subscript;        RefPtr<ExpressionNode> m_right;        bool m_subscriptHasAssignments : 1;        bool m_rightHasAssignments : 1;    };    class AssignDotNode : public ExpressionNode, public ThrowableExpressionData {    public:        AssignDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_ident(ident)            , m_right(right)            , m_rightHasAssignments(rightHasAssignments)        {        }        virtual ~AssignDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;        RefPtr<ExpressionNode> m_right;        bool m_rightHasAssignments;    };    class ReadModifyDotNode : public ExpressionNode, public ThrowableSubExpressionData {    public:        ReadModifyDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableSubExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_ident(ident)            , m_right(right)            , m_operator(oper)            , m_rightHasAssignments(rightHasAssignments)        {        }        virtual ~ReadModifyDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;        RefPtr<ExpressionNode> m_right;        Operator m_operator : 31;        bool m_rightHasAssignments : 1;    };    class AssignErrorNode : public ExpressionNode, public ThrowableExpressionData {    public:        AssignErrorNode(JSGlobalData* globalData, ExpressionNode* left, Operator oper, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_left(left)            , m_operator(oper)            , m_right(right)        {        }        virtual ~AssignErrorNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_left;        Operator m_operator;        RefPtr<ExpressionNode> m_right;    };    class CommaNode : public ExpressionNode {    public:        CommaNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2) JSC_FAST_CALL            : ExpressionNode(globalData)            , m_expr1(expr1)            , m_expr2(expr2)        {        }        virtual ~CommaNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr1;        RefPtr<ExpressionNode> m_expr2;    };        class VarDeclCommaNode : public CommaNode {    public:        VarDeclCommaNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2) JSC_FAST_CALL            : CommaNode(globalData, expr1, expr2)        {        }    };    class ConstDeclNode : public ExpressionNode {    public:        ConstDeclNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* in) JSC_FAST_CALL;        virtual ~ConstDeclNode();        virtual void releaseNodes(NodeReleaser&);        Identifier m_ident;        RefPtr<ConstDeclNode> m_next;        RefPtr<ExpressionNode> m_init;                virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        virtual RegisterID* emitCodeSingle(BytecodeGenerator&) JSC_FAST_CALL;    };    class ConstStatementNode : public StatementNode {    public:        ConstStatementNode(JSGlobalData* globalData, ConstDeclNode* next) JSC_FAST_CALL            : StatementNode(globalData)            , m_next(next)        {        }        virtual ~ConstStatementNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ConstDeclNode> m_next;    };    typedef Vector<RefPtr<StatementNode> > StatementVector;    class SourceElements : public ParserRefCounted {    public:        SourceElements(JSGlobalData* globalData) : ParserRefCounted(globalData) {}        void append(PassRefPtr<StatementNode>);        void releaseContentsIntoVector(StatementVector& destination)        {            ASSERT(destination.isEmpty());            m_statements.swap(destination);            destination.shrinkToFit();        }    private:        StatementVector m_statements;    };    class BlockNode : public StatementNode {    public:        BlockNode(JSGlobalData*, SourceElements* children) JSC_FAST_CALL;        virtual ~BlockNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        StatementVector& children() { return m_children; }        virtual bool isBlock() const JSC_FAST_CALL { return true; }    private:        StatementVector m_children;    };    class EmptyStatementNode : public StatementNode {    public:        EmptyStatementNode(JSGlobalData* globalData) JSC_FAST_CALL // debug            : StatementNode(globalData)        {        }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        virtual bool isEmptyStatement() const JSC_FAST_CALL { return true; }    };        class DebuggerStatementNode : public StatementNode {    public:        DebuggerStatementNode(JSGlobalData* globalData) JSC_FAST_CALL            : StatementNode(globalData)        {        }                virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    };    class ExprStatementNode : public StatementNode {    public:        ExprStatementNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : StatementNode(globalData)            , m_expr(expr)        {        }        virtual bool isExprStatement() const JSC_FAST_CALL { return true; }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        ExpressionNode* expr() const { return m_expr.get(); }    private:        RefPtr<ExpressionNode> m_expr;    };    class VarStatementNode : public StatementNode {    public:        VarStatementNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : StatementNode(globalData)            , m_expr(expr)        {        }                virtual ~VarStatementNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;    };    class IfNode : public StatementNode {    public:        IfNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock) JSC_FAST_CALL            : StatementNode(globalData)            , m_condition(condition)            , m_ifBlock(ifBlock)        {        }        virtual ~IfNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    protected:        RefPtr<ExpressionNode> m_condition;        RefPtr<StatementNode> m_ifBlock;    };    class IfElseNode : public IfNode {    public:        IfElseNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock) JSC_FAST_CALL            : IfNode(globalData, condition, ifBlock)            , m_elseBlock(elseBlock)        {        }        virtual ~IfElseNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<StatementNode> m_elseBlock;    };    class DoWhileNode : public StatementNode {    public:        DoWhileNode(JSGlobalData* globalData, StatementNode* statement, ExpressionNode* expr) JSC_FAST_CALL            : StatementNode(globalData)            , m_statement(statement)            , m_expr(expr)        {        }        virtual ~DoWhileNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<StatementNode> m_statement;        RefPtr<ExpressionNode> m_expr;    };    class WhileNode : public StatementNode {    public:        WhileNode(JSGlobalData* globalData, ExpressionNode* expr, StatementNode* statement) JSC_FAST_CALL            : StatementNode(globalData)            , m_expr(expr)            , m_statement(statement)        {        }        virtual ~WhileNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;        RefPtr<StatementNode> m_statement;    };    class ForNode : public StatementNode {    public:        ForNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl) JSC_FAST_CALL            : StatementNode(globalData)            , m_expr1(expr1)            , m_expr2(expr2)            , m_expr3(expr3)            , m_statement(statement)            , m_expr1WasVarDecl(expr1 && expr1WasVarDecl)        {            ASSERT(statement);        }        virtual ~ForNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr1;        RefPtr<ExpressionNode> m_expr2;        RefPtr<ExpressionNode> m_expr3;        RefPtr<StatementNode> m_statement;        bool m_expr1WasVarDecl;    };    class ForInNode : public StatementNode, public ThrowableExpressionData {    public:        ForInNode(JSGlobalData*, ExpressionNode*, ExpressionNode*, StatementNode*) JSC_FAST_CALL;        ForInNode(JSGlobalData*, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset) JSC_FAST_CALL;                virtual ~ForInNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        Identifier m_ident;        RefPtr<E

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -