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

📄 nodes.h

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 H
📖 第 1 页 / 共 5 页
字号:
            , m_base(base)            , m_ident(ident)            , m_args(args)        {        }        virtual ~FunctionCallDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;        RefPtr<ArgumentsNode> m_args;    };    class PrePostResolveNode : public ExpressionNode, public ThrowableExpressionData {    public:        PrePostResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData, ResultType::numberType()) // could be reusable for pre?            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_ident(ident)        {        }    protected:        Identifier m_ident;    };    class PostfixResolveNode : public PrePostResolveNode {    public:        PostfixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)            , m_operator(oper)        {        }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        Operator m_operator;    };    class PostfixBracketNode : public ExpressionNode, public ThrowableSubExpressionData {    public:        PostfixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableSubExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_subscript(subscript)            , m_operator(oper)        {        }        virtual ~PostfixBracketNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        RefPtr<ExpressionNode> m_subscript;        Operator m_operator;    };    class PostfixDotNode : public ExpressionNode, public ThrowableSubExpressionData {    public:        PostfixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableSubExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_ident(ident)            , m_operator(oper)        {        }        virtual ~PostfixDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;        Operator m_operator;    };    class PostfixErrorNode : public ExpressionNode, public ThrowableSubExpressionData {    public:        PostfixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableSubExpressionData(divot, startOffset, endOffset)            , m_expr(expr)            , m_operator(oper)        {        }        virtual ~PostfixErrorNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;        Operator m_operator;    };    class DeleteResolveNode : public ExpressionNode, public ThrowableExpressionData {    public:        DeleteResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_ident(ident)        {        }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        Identifier m_ident;    };    class DeleteBracketNode : public ExpressionNode, public ThrowableExpressionData {    public:        DeleteBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_subscript(subscript)        {        }        virtual ~DeleteBracketNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        RefPtr<ExpressionNode> m_subscript;    };    class DeleteDotNode : public ExpressionNode, public ThrowableExpressionData {    public:        DeleteDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_ident(ident)        {        }        virtual ~DeleteDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;    };    class DeleteValueNode : public ExpressionNode {    public:        DeleteValueNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : ExpressionNode(globalData)            , m_expr(expr)        {        }        virtual ~DeleteValueNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;    };    class VoidNode : public ExpressionNode {    public:        VoidNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : ExpressionNode(globalData)            , m_expr(expr)        {        }        virtual ~VoidNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;    };    class TypeOfResolveNode : public ExpressionNode {    public:        TypeOfResolveNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL            : ExpressionNode(globalData, ResultType::stringType())            , m_ident(ident)        {        }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        const Identifier& identifier() const JSC_FAST_CALL { return m_ident; }    private:        Identifier m_ident;    };    class TypeOfValueNode : public ExpressionNode {    public:        TypeOfValueNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : ExpressionNode(globalData, ResultType::stringType())            , m_expr(expr)        {        }        virtual ~TypeOfValueNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;    };    class PrefixResolveNode : public PrePostResolveNode {    public:        PrefixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)            , m_operator(oper)        {        }        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        Operator m_operator;    };    class PrefixBracketNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {    public:        PrefixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_subscript(subscript)            , m_operator(oper)        {        }        virtual ~PrefixBracketNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        RefPtr<ExpressionNode> m_subscript;        Operator m_operator;    };    class PrefixDotNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {    public:        PrefixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)            , m_base(base)            , m_ident(ident)            , m_operator(oper)        {        }        virtual ~PrefixDotNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_base;        Identifier m_ident;        Operator m_operator;    };    class PrefixErrorNode : public ExpressionNode, public ThrowableExpressionData {    public:        PrefixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL            : ExpressionNode(globalData)            , ThrowableExpressionData(divot, startOffset, endOffset)            , m_expr(expr)            , m_operator(oper)        {        }        virtual ~PrefixErrorNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;    private:        RefPtr<ExpressionNode> m_expr;        Operator m_operator;    };    class UnaryOpNode : public ExpressionNode {    public:        UnaryOpNode(JSGlobalData* globalData, ExpressionNode* expr)            : ExpressionNode(globalData)            , m_expr(expr)        {        }        UnaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr)            : ExpressionNode(globalData, type)            , m_expr(expr)        {        }        virtual ~UnaryOpNode();        virtual void releaseNodes(NodeReleaser&);        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;        virtual OpcodeID opcodeID() const JSC_FAST_CALL = 0;    protected:        RefPtr<ExpressionNode> m_expr;    };    class UnaryPlusNode : public UnaryOpNode {    public:        UnaryPlusNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : UnaryOpNode(globalData, ResultType::numberType(), expr)        {        }        virtual ExpressionNode* stripUnaryPlus() { return m_expr.get(); }        virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_to_jsnumber; }    };    class NegateNode : public UnaryOpNode {    public:        NegateNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : UnaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr)        {        }        virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_negate; }    };    class BitwiseNotNode : public UnaryOpNode {    public:        BitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : UnaryOpNode(globalData, ResultType::forBitOp(), expr)        {        }        virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_bitnot; }    };    class LogicalNotNode : public UnaryOpNode {    public:        LogicalNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL            : UnaryOpNode(globalData, ResultType::booleanType(), expr)        {        }        virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_not; }    };    class BinaryOpNode : public ExpressionNode {    public:        BinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)

⌨️ 快捷键说明

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