Ignore:
Timestamp:
Oct 31, 2011, 3:13:01 PM (14 years ago)
Author:
[email protected]
Message:

Towards 8-bit Strings: Move Lexer and Parser Objects out of JSGlobalData
https://bugs.webkit.org/show_bug.cgi?id=71138

Restructure and movement of Lexer and Parser code.
Moved Lexer and Parser objects out of JSGlobalData.
Added a new ParserTokens class and instance to JSGlobalData that
have JavaScript token related definitions.
Replaced JSGlobalData arguments to Node classes with lineNumber,
as that was the only use of the JSGlobalData.
Combined JSParser and Parser classes into one class,
eliminating JSParser.h and .cpp.
Various supporting #include changes.

These mostly mechanical changes are done in preparation to
making the Lexer and Parser template classes.

Reviewed by Darin Adler.

(JSC::ArrayNode::toArgumentList):
(JSC::ApplyFunctionCallDotNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::ASTBuilder):
(JSC::ASTBuilder::createSourceElements):
(JSC::ASTBuilder::createCommaExpr):
(JSC::ASTBuilder::createLogicalNot):
(JSC::ASTBuilder::createUnaryPlus):
(JSC::ASTBuilder::createVoid):
(JSC::ASTBuilder::thisExpr):
(JSC::ASTBuilder::createResolve):
(JSC::ASTBuilder::createObjectLiteral):
(JSC::ASTBuilder::createArray):
(JSC::ASTBuilder::createNumberExpr):
(JSC::ASTBuilder::createString):
(JSC::ASTBuilder::createBoolean):
(JSC::ASTBuilder::createNull):
(JSC::ASTBuilder::createBracketAccess):
(JSC::ASTBuilder::createDotAccess):
(JSC::ASTBuilder::createRegExp):
(JSC::ASTBuilder::createNewExpr):
(JSC::ASTBuilder::createConditionalExpr):
(JSC::ASTBuilder::createAssignResolve):
(JSC::ASTBuilder::createFunctionExpr):
(JSC::ASTBuilder::createFunctionBody):
(JSC::ASTBuilder::createGetterOrSetterProperty):
(JSC::ASTBuilder::createArguments):
(JSC::ASTBuilder::createArgumentsList):
(JSC::ASTBuilder::createPropertyList):
(JSC::ASTBuilder::createElementList):
(JSC::ASTBuilder::createFormalParameterList):
(JSC::ASTBuilder::createClause):
(JSC::ASTBuilder::createClauseList):
(JSC::ASTBuilder::createFuncDeclStatement):
(JSC::ASTBuilder::createBlockStatement):
(JSC::ASTBuilder::createExprStatement):
(JSC::ASTBuilder::createIfStatement):
(JSC::ASTBuilder::createForLoop):
(JSC::ASTBuilder::createForInLoop):
(JSC::ASTBuilder::createEmptyStatement):
(JSC::ASTBuilder::createVarStatement):
(JSC::ASTBuilder::createReturnStatement):
(JSC::ASTBuilder::createBreakStatement):
(JSC::ASTBuilder::createContinueStatement):
(JSC::ASTBuilder::createTryStatement):
(JSC::ASTBuilder::createSwitchStatement):
(JSC::ASTBuilder::createWhileStatement):
(JSC::ASTBuilder::createDoWhileStatement):
(JSC::ASTBuilder::createLabelStatement):
(JSC::ASTBuilder::createWithStatement):
(JSC::ASTBuilder::createThrowStatement):
(JSC::ASTBuilder::createDebugger):
(JSC::ASTBuilder::createConstStatement):
(JSC::ASTBuilder::appendConstDecl):
(JSC::ASTBuilder::combineCommaNodes):
(JSC::ASTBuilder::appendBinaryOperation):
(JSC::ASTBuilder::createAssignment):
(JSC::ASTBuilder::createNumber):
(JSC::ASTBuilder::makeTypeOfNode):
(JSC::ASTBuilder::makeDeleteNode):
(JSC::ASTBuilder::makeNegateNode):
(JSC::ASTBuilder::makeBitwiseNotNode):
(JSC::ASTBuilder::makeMultNode):
(JSC::ASTBuilder::makeDivNode):
(JSC::ASTBuilder::makeModNode):
(JSC::ASTBuilder::makeAddNode):
(JSC::ASTBuilder::makeSubNode):
(JSC::ASTBuilder::makeLeftShiftNode):
(JSC::ASTBuilder::makeRightShiftNode):
(JSC::ASTBuilder::makeURightShiftNode):
(JSC::ASTBuilder::makeBitOrNode):
(JSC::ASTBuilder::makeBitAndNode):
(JSC::ASTBuilder::makeBitXOrNode):
(JSC::ASTBuilder::makeFunctionCallNode):
(JSC::ASTBuilder::makeBinaryNode):
(JSC::ASTBuilder::makeAssignNode):
(JSC::ASTBuilder::makePrefixNode):
(JSC::ASTBuilder::makePostfixNode):

  • parser/JSParser.cpp: Removed.
  • parser/JSParser.h: Removed.
  • parser/Lexer.cpp:

(JSC::Keywords::Keywords):
(JSC::Lexer::Lexer):
(JSC::Lexer::~Lexer):
(JSC::Lexer::setCode):
(JSC::Lexer::parseIdentifier):

  • parser/Lexer.h:

(JSC::Keywords::isKeyword):
(JSC::Keywords::getKeyword):
(JSC::Keywords::~Keywords):
(JSC::Lexer::setIsReparsing):
(JSC::Lexer::isReparsing):
(JSC::Lexer::lineNumber):
(JSC::Lexer::setLastLineNumber):
(JSC::Lexer::lastLineNumber):
(JSC::Lexer::prevTerminator):
(JSC::Lexer::sawError):
(JSC::Lexer::getErrorMessage):
(JSC::Lexer::currentOffset):
(JSC::Lexer::setOffset):
(JSC::Lexer::setLineNumber):
(JSC::Lexer::sourceProvider):
(JSC::Lexer::isWhiteSpace):
(JSC::Lexer::isLineTerminator):
(JSC::Lexer::convertHex):
(JSC::Lexer::convertUnicode):
(JSC::Lexer::makeIdentifier):
(JSC::Lexer::lexExpectIdentifier):

  • parser/NodeConstructors.h:

(JSC::ParserArenaFreeable::operator new):
(JSC::ParserArenaDeletable::operator new):
(JSC::ParserArenaRefCounted::ParserArenaRefCounted):
(JSC::Node::Node):
(JSC::ExpressionNode::ExpressionNode):
(JSC::StatementNode::StatementNode):
(JSC::NullNode::NullNode):
(JSC::BooleanNode::BooleanNode):
(JSC::NumberNode::NumberNode):
(JSC::StringNode::StringNode):
(JSC::RegExpNode::RegExpNode):
(JSC::ThisNode::ThisNode):
(JSC::ResolveNode::ResolveNode):
(JSC::ElementNode::ElementNode):
(JSC::ArrayNode::ArrayNode):
(JSC::PropertyNode::PropertyNode):
(JSC::PropertyListNode::PropertyListNode):
(JSC::ObjectLiteralNode::ObjectLiteralNode):
(JSC::BracketAccessorNode::BracketAccessorNode):
(JSC::DotAccessorNode::DotAccessorNode):
(JSC::ArgumentListNode::ArgumentListNode):
(JSC::ArgumentsNode::ArgumentsNode):
(JSC::NewExprNode::NewExprNode):
(JSC::EvalFunctionCallNode::EvalFunctionCallNode):
(JSC::FunctionCallValueNode::FunctionCallValueNode):
(JSC::FunctionCallResolveNode::FunctionCallResolveNode):
(JSC::FunctionCallBracketNode::FunctionCallBracketNode):
(JSC::FunctionCallDotNode::FunctionCallDotNode):
(JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
(JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
(JSC::PrePostResolveNode::PrePostResolveNode):
(JSC::PostfixResolveNode::PostfixResolveNode):
(JSC::PostfixBracketNode::PostfixBracketNode):
(JSC::PostfixDotNode::PostfixDotNode):
(JSC::PostfixErrorNode::PostfixErrorNode):
(JSC::DeleteResolveNode::DeleteResolveNode):
(JSC::DeleteBracketNode::DeleteBracketNode):
(JSC::DeleteDotNode::DeleteDotNode):
(JSC::DeleteValueNode::DeleteValueNode):
(JSC::VoidNode::VoidNode):
(JSC::TypeOfResolveNode::TypeOfResolveNode):
(JSC::TypeOfValueNode::TypeOfValueNode):
(JSC::PrefixResolveNode::PrefixResolveNode):
(JSC::PrefixBracketNode::PrefixBracketNode):
(JSC::PrefixDotNode::PrefixDotNode):
(JSC::PrefixErrorNode::PrefixErrorNode):
(JSC::UnaryOpNode::UnaryOpNode):
(JSC::UnaryPlusNode::UnaryPlusNode):
(JSC::NegateNode::NegateNode):
(JSC::BitwiseNotNode::BitwiseNotNode):
(JSC::LogicalNotNode::LogicalNotNode):
(JSC::BinaryOpNode::BinaryOpNode):
(JSC::MultNode::MultNode):
(JSC::DivNode::DivNode):
(JSC::ModNode::ModNode):
(JSC::AddNode::AddNode):
(JSC::SubNode::SubNode):
(JSC::LeftShiftNode::LeftShiftNode):
(JSC::RightShiftNode::RightShiftNode):
(JSC::UnsignedRightShiftNode::UnsignedRightShiftNode):
(JSC::LessNode::LessNode):
(JSC::GreaterNode::GreaterNode):
(JSC::LessEqNode::LessEqNode):
(JSC::GreaterEqNode::GreaterEqNode):
(JSC::ThrowableBinaryOpNode::ThrowableBinaryOpNode):
(JSC::InstanceOfNode::InstanceOfNode):
(JSC::InNode::InNode):
(JSC::EqualNode::EqualNode):
(JSC::NotEqualNode::NotEqualNode):
(JSC::StrictEqualNode::StrictEqualNode):
(JSC::NotStrictEqualNode::NotStrictEqualNode):
(JSC::BitAndNode::BitAndNode):
(JSC::BitOrNode::BitOrNode):
(JSC::BitXOrNode::BitXOrNode):
(JSC::LogicalOpNode::LogicalOpNode):
(JSC::ConditionalNode::ConditionalNode):
(JSC::ReadModifyResolveNode::ReadModifyResolveNode):
(JSC::AssignResolveNode::AssignResolveNode):
(JSC::ReadModifyBracketNode::ReadModifyBracketNode):
(JSC::AssignBracketNode::AssignBracketNode):
(JSC::AssignDotNode::AssignDotNode):
(JSC::ReadModifyDotNode::ReadModifyDotNode):
(JSC::AssignErrorNode::AssignErrorNode):
(JSC::CommaNode::CommaNode):
(JSC::ConstStatementNode::ConstStatementNode):
(JSC::SourceElements::SourceElements):
(JSC::EmptyStatementNode::EmptyStatementNode):
(JSC::DebuggerStatementNode::DebuggerStatementNode):
(JSC::ExprStatementNode::ExprStatementNode):
(JSC::VarStatementNode::VarStatementNode):
(JSC::IfNode::IfNode):
(JSC::IfElseNode::IfElseNode):
(JSC::DoWhileNode::DoWhileNode):
(JSC::WhileNode::WhileNode):
(JSC::ForNode::ForNode):
(JSC::ContinueNode::ContinueNode):
(JSC::BreakNode::BreakNode):
(JSC::ReturnNode::ReturnNode):
(JSC::WithNode::WithNode):
(JSC::LabelNode::LabelNode):
(JSC::ThrowNode::ThrowNode):
(JSC::TryNode::TryNode):
(JSC::ParameterNode::ParameterNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::FuncDeclNode::FuncDeclNode):
(JSC::CaseClauseNode::CaseClauseNode):
(JSC::ClauseListNode::ClauseListNode):
(JSC::CaseBlockNode::CaseBlockNode):
(JSC::SwitchNode::SwitchNode):
(JSC::ConstDeclNode::ConstDeclNode):
(JSC::BlockNode::BlockNode):
(JSC::ForInNode::ForInNode):

  • parser/NodeInfo.h:
  • parser/Nodes.cpp:

(JSC::StatementNode::setLoc):
(JSC::ScopeNode::ScopeNode):
(JSC::ProgramNode::ProgramNode):
(JSC::ProgramNode::create):
(JSC::EvalNode::EvalNode):
(JSC::EvalNode::create):
(JSC::FunctionBodyNode::FunctionBodyNode):
(JSC::FunctionBodyNode::create):

  • parser/Nodes.h:

(JSC::Node::lineNo):

  • parser/Parser.cpp:

(JSC::Parser::Parser):
(JSC::Parser::~Parser):
(JSC::Parser::parseInner):
(JSC::Parser::allowAutomaticSemicolon):
(JSC::Parser::parseSourceElements):
(JSC::Parser::parseVarDeclaration):
(JSC::Parser::parseConstDeclaration):
(JSC::Parser::parseDoWhileStatement):
(JSC::Parser::parseWhileStatement):
(JSC::Parser::parseVarDeclarationList):
(JSC::Parser::parseConstDeclarationList):
(JSC::Parser::parseForStatement):
(JSC::Parser::parseBreakStatement):
(JSC::Parser::parseContinueStatement):
(JSC::Parser::parseReturnStatement):
(JSC::Parser::parseThrowStatement):
(JSC::Parser::parseWithStatement):
(JSC::Parser::parseSwitchStatement):
(JSC::Parser::parseSwitchClauses):
(JSC::Parser::parseSwitchDefaultClause):
(JSC::Parser::parseTryStatement):
(JSC::Parser::parseDebuggerStatement):
(JSC::Parser::parseBlockStatement):
(JSC::Parser::parseStatement):
(JSC::Parser::parseFormalParameters):
(JSC::Parser::parseFunctionBody):
(JSC::Parser::parseFunctionInfo):
(JSC::Parser::parseFunctionDeclaration):
(JSC::LabelInfo::LabelInfo):
(JSC::Parser::parseExpressionOrLabelStatement):
(JSC::Parser::parseExpressionStatement):
(JSC::Parser::parseIfStatement):
(JSC::Parser::parseExpression):
(JSC::Parser::parseAssignmentExpression):
(JSC::Parser::parseConditionalExpression):
(JSC::isUnaryOp):
(JSC::Parser::isBinaryOperator):
(JSC::Parser::parseBinaryExpression):
(JSC::Parser::parseProperty):
(JSC::Parser::parseObjectLiteral):
(JSC::Parser::parseStrictObjectLiteral):
(JSC::Parser::parseArrayLiteral):
(JSC::Parser::parsePrimaryExpression):
(JSC::Parser::parseArguments):
(JSC::Parser::parseMemberExpression):
(JSC::Parser::parseUnaryExpression):

  • parser/Parser.h:

(JSC::isEvalNode):
(JSC::EvalNode):
(JSC::DepthManager::DepthManager):
(JSC::DepthManager::~DepthManager):
(JSC::ScopeLabelInfo::ScopeLabelInfo):
(JSC::Scope::Scope):
(JSC::Scope::startSwitch):
(JSC::Scope::endSwitch):
(JSC::Scope::startLoop):
(JSC::Scope::endLoop):
(JSC::Scope::inLoop):
(JSC::Scope::breakIsValid):
(JSC::Scope::continueIsValid):
(JSC::Scope::pushLabel):
(JSC::Scope::popLabel):
(JSC::Scope::getLabel):
(JSC::Scope::setIsFunction):
(JSC::Scope::isFunction):
(JSC::Scope::isFunctionBoundary):
(JSC::Scope::declareVariable):
(JSC::Scope::declareWrite):
(JSC::Scope::preventNewDecls):
(JSC::Scope::allowsNewDecls):
(JSC::Scope::declareParameter):
(JSC::Scope::useVariable):
(JSC::Scope::setNeedsFullActivation):
(JSC::Scope::collectFreeVariables):
(JSC::Scope::getUncapturedWrittenVariables):
(JSC::Scope::getCapturedVariables):
(JSC::Scope::setStrictMode):
(JSC::Scope::strictMode):
(JSC::Scope::isValidStrictMode):
(JSC::Scope::shadowsArguments):
(JSC::Scope::copyCapturedVariablesToVector):
(JSC::Scope::saveFunctionInfo):
(JSC::Scope::restoreFunctionInfo):
(JSC::ScopeRef::ScopeRef):
(JSC::ScopeRef::operator->):
(JSC::ScopeRef::index):
(JSC::ScopeRef::hasContainingScope):
(JSC::ScopeRef::containingScope):
(JSC::Parser::AllowInOverride::AllowInOverride):
(JSC::Parser::AllowInOverride::~AllowInOverride):
(JSC::Parser::AutoPopScopeRef::AutoPopScopeRef):
(JSC::Parser::AutoPopScopeRef::~AutoPopScopeRef):
(JSC::Parser::AutoPopScopeRef::setPopped):
(JSC::Parser::currentScope):
(JSC::Parser::pushScope):
(JSC::Parser::popScopeInternal):
(JSC::Parser::popScope):
(JSC::Parser::declareVariable):
(JSC::Parser::declareWrite):
(JSC::Parser::findCachedFunctionInfo):
(JSC::Parser::isFunctionBodyNode):
(JSC::Parser::next):
(JSC::Parser::nextExpectIdentifier):
(JSC::Parser::nextTokenIsColon):
(JSC::Parser::consume):
(JSC::Parser::getToken):
(JSC::Parser::match):
(JSC::Parser::tokenStart):
(JSC::Parser::tokenLine):
(JSC::Parser::tokenEnd):
(JSC::Parser::getTokenName):
(JSC::Parser::updateErrorMessageSpecialCase):
(JSC::Parser::updateErrorMessage):
(JSC::Parser::updateErrorWithNameAndMessage):
(JSC::Parser::startLoop):
(JSC::Parser::endLoop):
(JSC::Parser::startSwitch):
(JSC::Parser::endSwitch):
(JSC::Parser::setStrictMode):
(JSC::Parser::strictMode):
(JSC::Parser::isValidStrictMode):
(JSC::Parser::declareParameter):
(JSC::Parser::breakIsValid):
(JSC::Parser::continueIsValid):
(JSC::Parser::pushLabel):
(JSC::Parser::popLabel):
(JSC::Parser::getLabel):
(JSC::Parser::autoSemiColon):
(JSC::Parser::canRecurse):
(JSC::Parser::lastTokenEnd):
(JSC::Parser::DepthManager::DepthManager):
(JSC::Parser::DepthManager::~DepthManager):
(JSC::Parser::parse):
(JSC::parse):

  • parser/ParserTokens.h: Added.

(JSC::JSTokenInfo::JSTokenInfo):

  • parser/SourceCode.h:

(JSC::SourceCode::subExpression):

  • parser/SourceProviderCacheItem.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::SyntaxChecker):
(JSC::SyntaxChecker::makeFunctionCallNode):
(JSC::SyntaxChecker::createCommaExpr):
(JSC::SyntaxChecker::makeAssignNode):
(JSC::SyntaxChecker::makePrefixNode):
(JSC::SyntaxChecker::makePostfixNode):
(JSC::SyntaxChecker::makeTypeOfNode):
(JSC::SyntaxChecker::makeDeleteNode):
(JSC::SyntaxChecker::makeNegateNode):
(JSC::SyntaxChecker::makeBitwiseNotNode):
(JSC::SyntaxChecker::createLogicalNot):
(JSC::SyntaxChecker::createUnaryPlus):
(JSC::SyntaxChecker::createVoid):
(JSC::SyntaxChecker::thisExpr):
(JSC::SyntaxChecker::createResolve):
(JSC::SyntaxChecker::createObjectLiteral):
(JSC::SyntaxChecker::createArray):
(JSC::SyntaxChecker::createNumberExpr):
(JSC::SyntaxChecker::createString):
(JSC::SyntaxChecker::createBoolean):
(JSC::SyntaxChecker::createNull):
(JSC::SyntaxChecker::createBracketAccess):
(JSC::SyntaxChecker::createDotAccess):
(JSC::SyntaxChecker::createRegExp):
(JSC::SyntaxChecker::createNewExpr):
(JSC::SyntaxChecker::createConditionalExpr):
(JSC::SyntaxChecker::createAssignResolve):
(JSC::SyntaxChecker::createFunctionExpr):
(JSC::SyntaxChecker::createFunctionBody):
(JSC::SyntaxChecker::createArguments):
(JSC::SyntaxChecker::createArgumentsList):
(JSC::SyntaxChecker::createProperty):
(JSC::SyntaxChecker::createPropertyList):
(JSC::SyntaxChecker::createFuncDeclStatement):
(JSC::SyntaxChecker::createBlockStatement):
(JSC::SyntaxChecker::createExprStatement):
(JSC::SyntaxChecker::createIfStatement):
(JSC::SyntaxChecker::createForLoop):
(JSC::SyntaxChecker::createForInLoop):
(JSC::SyntaxChecker::createEmptyStatement):
(JSC::SyntaxChecker::createVarStatement):
(JSC::SyntaxChecker::createReturnStatement):
(JSC::SyntaxChecker::createBreakStatement):
(JSC::SyntaxChecker::createContinueStatement):
(JSC::SyntaxChecker::createTryStatement):
(JSC::SyntaxChecker::createSwitchStatement):
(JSC::SyntaxChecker::createWhileStatement):
(JSC::SyntaxChecker::createWithStatement):
(JSC::SyntaxChecker::createDoWhileStatement):
(JSC::SyntaxChecker::createLabelStatement):
(JSC::SyntaxChecker::createThrowStatement):
(JSC::SyntaxChecker::createDebugger):
(JSC::SyntaxChecker::createConstStatement):
(JSC::SyntaxChecker::appendConstDecl):
(JSC::SyntaxChecker::createGetterOrSetterProperty):
(JSC::SyntaxChecker::combineCommaNodes):
(JSC::SyntaxChecker::operatorStackPop):

  • runtime/Executable.cpp:

(JSC::EvalExecutable::compileInternal):
(JSC::ProgramExecutable::checkSyntax):
(JSC::ProgramExecutable::compileInternal):
(JSC::FunctionExecutable::produceCodeBlockFor):
(JSC::FunctionExecutable::fromGlobalCode):

  • runtime/JSGlobalData.cpp:

(JSC::JSGlobalData::JSGlobalData):
(JSC::JSGlobalData::~JSGlobalData):

  • runtime/JSGlobalData.h:
  • runtime/LiteralParser.cpp:

(JSC::LiteralParser::tryJSONPParse):

File:
1 edited

Legend:

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

    r90371 r98887  
    116116    };
    117117
     118    template <typename T>
     119    struct ParserArenaData : ParserArenaDeletable {
     120        T data;
     121    };
     122
    118123    class ParserArenaRefCounted : public RefCounted<ParserArenaRefCounted> {
    119124    protected:
     
    129134    class Node : public ParserArenaFreeable {
    130135    protected:
    131         Node(JSGlobalData*);
     136        Node(int);
    132137
    133138    public:
     
    136141        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* destination = 0) = 0;
    137142
    138         int lineNo() const { return m_line; }
     143        int lineNo() const { return m_lineNumber; }
    139144
    140145    protected:
    141         int m_line;
     146        int m_lineNumber;
    142147    };
    143148
    144149    class ExpressionNode : public Node {
    145150    protected:
    146         ExpressionNode(JSGlobalData*, ResultType = ResultType::unknownType());
     151        ExpressionNode(int, ResultType = ResultType::unknownType());
    147152
    148153    public:
     
    174179    class StatementNode : public Node {
    175180    protected:
    176         StatementNode(JSGlobalData*);
     181        StatementNode(int);
    177182
    178183    public:
     
    193198    class NullNode : public ExpressionNode {
    194199    public:
    195         NullNode(JSGlobalData*);
     200        NullNode(int);
    196201
    197202    private:
     
    203208    class BooleanNode : public ExpressionNode {
    204209    public:
    205         BooleanNode(JSGlobalData*, bool value);
     210        BooleanNode(int, bool value);
    206211
    207212    private:
     
    215220    class NumberNode : public ExpressionNode {
    216221    public:
    217         NumberNode(JSGlobalData*, double value);
     222        NumberNode(int, double value);
    218223
    219224        double value() const { return m_value; }
     
    231236    class StringNode : public ExpressionNode {
    232237    public:
    233         StringNode(JSGlobalData*, const Identifier&);
     238        StringNode(int, const Identifier&);
    234239
    235240        const Identifier& value() { return m_value; }
     
    341346    class RegExpNode : public ExpressionNode, public ThrowableExpressionData {
    342347    public:
    343         RegExpNode(JSGlobalData*, const Identifier& pattern, const Identifier& flags);
     348        RegExpNode(int, const Identifier& pattern, const Identifier& flags);
    344349
    345350    private:
     
    352357    class ThisNode : public ExpressionNode {
    353358    public:
    354         ThisNode(JSGlobalData*);
     359        ThisNode(int);
    355360
    356361    private:
     
    360365    class ResolveNode : public ExpressionNode {
    361366    public:
    362         ResolveNode(JSGlobalData*, const Identifier&, int startOffset);
     367        ResolveNode(int, const Identifier&, int startOffset);
    363368
    364369        const Identifier& identifier() const { return m_ident; }
     
    377382    class ElementNode : public ParserArenaFreeable {
    378383    public:
    379         ElementNode(JSGlobalData*, int elision, ExpressionNode*);
    380         ElementNode(JSGlobalData*, ElementNode*, int elision, ExpressionNode*);
     384        ElementNode(int elision, ExpressionNode*);
     385        ElementNode(ElementNode*, int elision, ExpressionNode*);
    381386
    382387        int elision() const { return m_elision; }
     
    392397    class ArrayNode : public ExpressionNode {
    393398    public:
    394         ArrayNode(JSGlobalData*, int elision);
    395         ArrayNode(JSGlobalData*, ElementNode*);
    396         ArrayNode(JSGlobalData*, int elision, ElementNode*);
    397 
    398         ArgumentListNode* toArgumentList(JSGlobalData*) const;
     399        ArrayNode(int, int elision);
     400        ArrayNode(int, ElementNode*);
     401        ArrayNode(int, int elision, ElementNode*);
     402
     403        ArgumentListNode* toArgumentList(JSGlobalData*, int) const;
    399404
    400405    private:
     
    412417        enum Type { Constant = 1, Getter = 2, Setter = 4 };
    413418
    414         PropertyNode(JSGlobalData*, const Identifier& name, ExpressionNode* value, Type);
    415         PropertyNode(JSGlobalData*, double name, ExpressionNode* value, Type);
     419        PropertyNode(JSGlobalData*, const Identifier&, ExpressionNode*, Type);
     420        PropertyNode(JSGlobalData*, double, ExpressionNode*, Type);
    416421
    417422        const Identifier& name() const { return m_name; }
     
    427432    class PropertyListNode : public Node {
    428433    public:
    429         PropertyListNode(JSGlobalData*, PropertyNode*);
    430         PropertyListNode(JSGlobalData*, PropertyNode*, PropertyListNode*);
     434        PropertyListNode(int, PropertyNode*);
     435        PropertyListNode(int, PropertyNode*, PropertyListNode*);
    431436
    432437        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
     
    439444    class ObjectLiteralNode : public ExpressionNode {
    440445    public:
    441         ObjectLiteralNode(JSGlobalData*);
    442         ObjectLiteralNode(JSGlobalData*, PropertyListNode*);
     446        ObjectLiteralNode(int);
     447        ObjectLiteralNode(int, PropertyListNode*);
    443448
    444449    private:
     
    450455    class BracketAccessorNode : public ExpressionNode, public ThrowableExpressionData {
    451456    public:
    452         BracketAccessorNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments);
     457        BracketAccessorNode(int, ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments);
    453458
    454459        ExpressionNode* base() const { return m_base; }
     
    468473    class DotAccessorNode : public ExpressionNode, public ThrowableExpressionData {
    469474    public:
    470         DotAccessorNode(JSGlobalData*, ExpressionNode* base, const Identifier&);
     475        DotAccessorNode(int, ExpressionNode* base, const Identifier&);
    471476
    472477        ExpressionNode* base() const { return m_base; }
     
    485490    class ArgumentListNode : public Node {
    486491    public:
    487         ArgumentListNode(JSGlobalData*, ExpressionNode*);
    488         ArgumentListNode(JSGlobalData*, ArgumentListNode*, ExpressionNode*);
     492        ArgumentListNode(int, ExpressionNode*);
     493        ArgumentListNode(int, ArgumentListNode*, ExpressionNode*);
    489494
    490495        ArgumentListNode* m_next;
     
    497502    class ArgumentsNode : public ParserArenaFreeable {
    498503    public:
    499         ArgumentsNode(JSGlobalData*);
    500         ArgumentsNode(JSGlobalData*, ArgumentListNode*);
     504        ArgumentsNode();
     505        ArgumentsNode(ArgumentListNode*);
    501506
    502507        ArgumentListNode* m_listNode;
     
    505510    class NewExprNode : public ExpressionNode, public ThrowableExpressionData {
    506511    public:
    507         NewExprNode(JSGlobalData*, ExpressionNode*);
    508         NewExprNode(JSGlobalData*, ExpressionNode*, ArgumentsNode*);
     512        NewExprNode(int, ExpressionNode*);
     513        NewExprNode(int, ExpressionNode*, ArgumentsNode*);
    509514
    510515    private:
     
    517522    class EvalFunctionCallNode : public ExpressionNode, public ThrowableExpressionData {
    518523    public:
    519         EvalFunctionCallNode(JSGlobalData*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     524        EvalFunctionCallNode(int, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    520525
    521526    private:
     
    527532    class FunctionCallValueNode : public ExpressionNode, public ThrowableExpressionData {
    528533    public:
    529         FunctionCallValueNode(JSGlobalData*, ExpressionNode*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     534        FunctionCallValueNode(int, ExpressionNode*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    530535
    531536    private:
     
    538543    class FunctionCallResolveNode : public ExpressionNode, public ThrowableExpressionData {
    539544    public:
    540         FunctionCallResolveNode(JSGlobalData*, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     545        FunctionCallResolveNode(int, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    541546
    542547    private:
     
    551556    class FunctionCallBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
    552557    public:
    553         FunctionCallBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     558        FunctionCallBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    554559
    555560    private:
     
    563568    class FunctionCallDotNode : public ExpressionNode, public ThrowableSubExpressionData {
    564569    public:
    565         FunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     570        FunctionCallDotNode(int, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    566571
    567572    private:
     
    576581    class CallFunctionCallDotNode : public FunctionCallDotNode {
    577582    public:
    578         CallFunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     583        CallFunctionCallDotNode(int, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    579584
    580585    private:
     
    584589    class ApplyFunctionCallDotNode : public FunctionCallDotNode {
    585590    public:
    586         ApplyFunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
     591        ApplyFunctionCallDotNode(int, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
    587592
    588593    private:
     
    592597    class PrePostResolveNode : public ExpressionNode, public ThrowableExpressionData {
    593598    public:
    594         PrePostResolveNode(JSGlobalData*, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
     599        PrePostResolveNode(int, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
    595600
    596601    protected:
     
    600605    class PostfixResolveNode : public PrePostResolveNode {
    601606    public:
    602         PostfixResolveNode(JSGlobalData*, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     607        PostfixResolveNode(int, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    603608
    604609    private:
     
    610615    class PostfixBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
    611616    public:
    612         PostfixBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     617        PostfixBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    613618
    614619    private:
     
    622627    class PostfixDotNode : public ExpressionNode, public ThrowableSubExpressionData {
    623628    public:
    624         PostfixDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     629        PostfixDotNode(int, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    625630
    626631    private:
     
    634639    class PostfixErrorNode : public ExpressionNode, public ThrowableSubExpressionData {
    635640    public:
    636         PostfixErrorNode(JSGlobalData*, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     641        PostfixErrorNode(int, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    637642
    638643    private:
     
    645650    class DeleteResolveNode : public ExpressionNode, public ThrowableExpressionData {
    646651    public:
    647         DeleteResolveNode(JSGlobalData*, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
     652        DeleteResolveNode(int, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
    648653
    649654    private:
     
    655660    class DeleteBracketNode : public ExpressionNode, public ThrowableExpressionData {
    656661    public:
    657         DeleteBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset);
     662        DeleteBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset);
    658663
    659664    private:
     
    666671    class DeleteDotNode : public ExpressionNode, public ThrowableExpressionData {
    667672    public:
    668         DeleteDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
     673        DeleteDotNode(int, ExpressionNode* base, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
    669674
    670675    private:
     
    677682    class DeleteValueNode : public ExpressionNode {
    678683    public:
    679         DeleteValueNode(JSGlobalData*, ExpressionNode*);
     684        DeleteValueNode(int, ExpressionNode*);
    680685
    681686    private:
     
    687692    class VoidNode : public ExpressionNode {
    688693    public:
    689         VoidNode(JSGlobalData*, ExpressionNode*);
     694        VoidNode(int, ExpressionNode*);
    690695
    691696    private:
     
    697702    class TypeOfResolveNode : public ExpressionNode {
    698703    public:
    699         TypeOfResolveNode(JSGlobalData*, const Identifier&);
     704        TypeOfResolveNode(int, const Identifier&);
    700705
    701706        const Identifier& identifier() const { return m_ident; }
     
    709714    class TypeOfValueNode : public ExpressionNode {
    710715    public:
    711         TypeOfValueNode(JSGlobalData*, ExpressionNode*);
     716        TypeOfValueNode(int, ExpressionNode*);
    712717
    713718    private:
     
    719724    class PrefixResolveNode : public PrePostResolveNode {
    720725    public:
    721         PrefixResolveNode(JSGlobalData*, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     726        PrefixResolveNode(int, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    722727
    723728    private:
     
    729734    class PrefixBracketNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {
    730735    public:
    731         PrefixBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     736        PrefixBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    732737
    733738    private:
     
    741746    class PrefixDotNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {
    742747    public:
    743         PrefixDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     748        PrefixDotNode(int, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    744749
    745750    private:
     
    753758    class PrefixErrorNode : public ExpressionNode, public ThrowableExpressionData {
    754759    public:
    755         PrefixErrorNode(JSGlobalData*, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
     760        PrefixErrorNode(int, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
    756761
    757762    private:
     
    764769    class UnaryOpNode : public ExpressionNode {
    765770    public:
    766         UnaryOpNode(JSGlobalData*, ResultType, ExpressionNode*, OpcodeID);
     771        UnaryOpNode(int, ResultType, ExpressionNode*, OpcodeID);
    767772
    768773    protected:
     
    781786    class UnaryPlusNode : public UnaryOpNode {
    782787    public:
    783         UnaryPlusNode(JSGlobalData*, ExpressionNode*);
     788        UnaryPlusNode(int, ExpressionNode*);
    784789
    785790    private:
     
    789794    class NegateNode : public UnaryOpNode {
    790795    public:
    791         NegateNode(JSGlobalData*, ExpressionNode*);
     796        NegateNode(int, ExpressionNode*);
    792797    };
    793798
    794799    class BitwiseNotNode : public UnaryOpNode {
    795800    public:
    796         BitwiseNotNode(JSGlobalData*, ExpressionNode*);
     801        BitwiseNotNode(int, ExpressionNode*);
    797802    };
    798803
    799804    class LogicalNotNode : public UnaryOpNode {
    800805    public:
    801         LogicalNotNode(JSGlobalData*, ExpressionNode*);
     806        LogicalNotNode(int, ExpressionNode*);
    802807    private:
    803808        void emitBytecodeInConditionContext(BytecodeGenerator&, Label* trueTarget, Label* falseTarget, bool fallThroughMeansTrue);
     
    807812    class BinaryOpNode : public ExpressionNode {
    808813    public:
    809         BinaryOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
    810         BinaryOpNode(JSGlobalData*, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
     814        BinaryOpNode(int, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
     815        BinaryOpNode(int, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
    811816
    812817        RegisterID* emitStrcat(BytecodeGenerator& generator, RegisterID* destination, RegisterID* lhs = 0, ReadModifyResolveNode* emitExpressionInfoForMe = 0);
     
    832837    class MultNode : public BinaryOpNode {
    833838    public:
    834         MultNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     839        MultNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    835840    };
    836841
    837842    class DivNode : public BinaryOpNode {
    838843    public:
    839         DivNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     844        DivNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    840845    };
    841846
    842847    class ModNode : public BinaryOpNode {
    843848    public:
    844         ModNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     849        ModNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    845850    };
    846851
    847852    class AddNode : public BinaryOpNode {
    848853    public:
    849         AddNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     854        AddNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    850855
    851856        virtual bool isAdd() const { return true; }
     
    854859    class SubNode : public BinaryOpNode {
    855860    public:
    856         SubNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     861        SubNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    857862
    858863        virtual bool isSubtract() const { return true; }
     
    861866    class LeftShiftNode : public BinaryOpNode {
    862867    public:
    863         LeftShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     868        LeftShiftNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    864869    };
    865870
    866871    class RightShiftNode : public BinaryOpNode {
    867872    public:
    868         RightShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     873        RightShiftNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    869874    };
    870875
    871876    class UnsignedRightShiftNode : public BinaryOpNode {
    872877    public:
    873         UnsignedRightShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     878        UnsignedRightShiftNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    874879    };
    875880
    876881    class LessNode : public BinaryOpNode {
    877882    public:
    878         LessNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     883        LessNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    879884    };
    880885
    881886    class GreaterNode : public BinaryOpNode {
    882887    public:
    883         GreaterNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     888        GreaterNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    884889    };
    885890
    886891    class LessEqNode : public BinaryOpNode {
    887892    public:
    888         LessEqNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     893        LessEqNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    889894    };
    890895
    891896    class GreaterEqNode : public BinaryOpNode {
    892897    public:
    893         GreaterEqNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     898        GreaterEqNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    894899    };
    895900
    896901    class ThrowableBinaryOpNode : public BinaryOpNode, public ThrowableExpressionData {
    897902    public:
    898         ThrowableBinaryOpNode(JSGlobalData*, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
    899         ThrowableBinaryOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
     903        ThrowableBinaryOpNode(int, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
     904        ThrowableBinaryOpNode(int, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
    900905
    901906    private:
     
    905910    class InstanceOfNode : public ThrowableBinaryOpNode {
    906911    public:
    907         InstanceOfNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     912        InstanceOfNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    908913
    909914    private:
     
    913918    class InNode : public ThrowableBinaryOpNode {
    914919    public:
    915         InNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     920        InNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    916921    };
    917922
    918923    class EqualNode : public BinaryOpNode {
    919924    public:
    920         EqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     925        EqualNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    921926
    922927    private:
     
    926931    class NotEqualNode : public BinaryOpNode {
    927932    public:
    928         NotEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     933        NotEqualNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    929934    };
    930935
    931936    class StrictEqualNode : public BinaryOpNode {
    932937    public:
    933         StrictEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     938        StrictEqualNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    934939
    935940    private:
     
    939944    class NotStrictEqualNode : public BinaryOpNode {
    940945    public:
    941         NotStrictEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     946        NotStrictEqualNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    942947    };
    943948
    944949    class BitAndNode : public BinaryOpNode {
    945950    public:
    946         BitAndNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     951        BitAndNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    947952    };
    948953
    949954    class BitOrNode : public BinaryOpNode {
    950955    public:
    951         BitOrNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     956        BitOrNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    952957    };
    953958
    954959    class BitXOrNode : public BinaryOpNode {
    955960    public:
    956         BitXOrNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
     961        BitXOrNode(int, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
    957962    };
    958963
     
    960965    class LogicalOpNode : public ExpressionNode {
    961966    public:
    962         LogicalOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator);
     967        LogicalOpNode(int, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator);
    963968
    964969    private:
     
    975980    class ConditionalNode : public ExpressionNode {
    976981    public:
    977         ConditionalNode(JSGlobalData*, ExpressionNode* logical, ExpressionNode* expr1, ExpressionNode* expr2);
     982        ConditionalNode(int, ExpressionNode* logical, ExpressionNode* expr1, ExpressionNode* expr2);
    978983
    979984    private:
     
    987992    class ReadModifyResolveNode : public ExpressionNode, public ThrowableExpressionData {
    988993    public:
    989         ReadModifyResolveNode(JSGlobalData*, const Identifier&, Operator, ExpressionNode*  right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
     994        ReadModifyResolveNode(int, const Identifier&, Operator, ExpressionNode*  right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
    990995
    991996    private:
     
    10011006    class AssignResolveNode : public ExpressionNode, public ThrowableExpressionData {
    10021007    public:
    1003         AssignResolveNode(JSGlobalData*, const Identifier&, ExpressionNode* right, bool rightHasAssignments);
     1008        AssignResolveNode(int, const Identifier&, ExpressionNode* right, bool rightHasAssignments);
    10041009
    10051010    private:
     
    10141019    class ReadModifyBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
    10151020    public:
    1016         ReadModifyBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
     1021        ReadModifyBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, Operator, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
    10171022
    10181023    private:
     
    10291034    class AssignBracketNode : public ExpressionNode, public ThrowableExpressionData {
    10301035    public:
    1031         AssignBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
     1036        AssignBracketNode(int, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
    10321037
    10331038    private:
     
    10431048    class AssignDotNode : public ExpressionNode, public ThrowableExpressionData {
    10441049    public:
    1045         AssignDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
     1050        AssignDotNode(int, ExpressionNode* base, const Identifier&, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
    10461051
    10471052    private:
     
    10561061    class ReadModifyDotNode : public ExpressionNode, public ThrowableSubExpressionData {
    10571062    public:
    1058         ReadModifyDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
     1063        ReadModifyDotNode(int, ExpressionNode* base, const Identifier&, Operator, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
    10591064
    10601065    private:
     
    10701075    class AssignErrorNode : public ExpressionNode, public ThrowableExpressionData {
    10711076    public:
    1072         AssignErrorNode(JSGlobalData*, ExpressionNode* left, Operator, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset);
     1077        AssignErrorNode(int, ExpressionNode* left, Operator, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset);
    10731078
    10741079    private:
     
    10841089    class CommaNode : public ExpressionNode, public ParserArenaDeletable {
    10851090    public:
    1086         CommaNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2);
     1091        CommaNode(int, ExpressionNode* expr1, ExpressionNode* expr2);
    10871092
    10881093        using ParserArenaDeletable::operator new;
     
    10991104    class ConstDeclNode : public ExpressionNode {
    11001105    public:
    1101         ConstDeclNode(JSGlobalData*, const Identifier&, ExpressionNode*);
     1106        ConstDeclNode(int, const Identifier&, ExpressionNode*);
    11021107
    11031108        bool hasInitializer() const { return m_init; }
     
    11191124    class ConstStatementNode : public StatementNode {
    11201125    public:
    1121         ConstStatementNode(JSGlobalData*, ConstDeclNode* next);
     1126        ConstStatementNode(int, ConstDeclNode* next);
    11221127
    11231128    private:
     
    11291134    class SourceElements : public ParserArenaDeletable {
    11301135    public:
    1131         SourceElements(JSGlobalData*);
     1136        SourceElements();
    11321137
    11331138        void append(StatementNode*);
     
    11441149    class BlockNode : public StatementNode {
    11451150    public:
    1146         BlockNode(JSGlobalData*, SourceElements* = 0);
     1151        BlockNode(int, SourceElements* = 0);
    11471152
    11481153        StatementNode* singleStatement() const;
     
    11591164    class EmptyStatementNode : public StatementNode {
    11601165    public:
    1161         EmptyStatementNode(JSGlobalData*);
     1166        EmptyStatementNode(int);
    11621167
    11631168    private:
     
    11691174    class DebuggerStatementNode : public StatementNode {
    11701175    public:
    1171         DebuggerStatementNode(JSGlobalData*);
     1176        DebuggerStatementNode(int);
    11721177       
    11731178    private:
     
    11771182    class ExprStatementNode : public StatementNode {
    11781183    public:
    1179         ExprStatementNode(JSGlobalData*, ExpressionNode*);
     1184        ExprStatementNode(int, ExpressionNode*);
    11801185
    11811186        ExpressionNode* expr() const { return m_expr; }
     
    11911196    class VarStatementNode : public StatementNode {
    11921197    public:
    1193         VarStatementNode(JSGlobalData*, ExpressionNode*);       
     1198        VarStatementNode(int, ExpressionNode*);       
    11941199
    11951200    private:
     
    12011206    class IfNode : public StatementNode {
    12021207    public:
    1203         IfNode(JSGlobalData*, ExpressionNode* condition, StatementNode* ifBlock);
     1208        IfNode(int, ExpressionNode* condition, StatementNode* ifBlock);
    12041209
    12051210    protected:
     
    12121217    class IfElseNode : public IfNode {
    12131218    public:
    1214         IfElseNode(JSGlobalData*, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock);
     1219        IfElseNode(int, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock);
    12151220
    12161221    private:
     
    12221227    class DoWhileNode : public StatementNode {
    12231228    public:
    1224         DoWhileNode(JSGlobalData*, StatementNode* statement, ExpressionNode*);
     1229        DoWhileNode(int, StatementNode*, ExpressionNode*);
    12251230
    12261231    private:
     
    12331238    class WhileNode : public StatementNode {
    12341239    public:
    1235         WhileNode(JSGlobalData*, ExpressionNode*, StatementNode* statement);
     1240        WhileNode(int, ExpressionNode*, StatementNode*);
    12361241
    12371242    private:
     
    12441249    class ForNode : public StatementNode {
    12451250    public:
    1246         ForNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl);
     1251        ForNode(int, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode*, bool expr1WasVarDecl);
    12471252
    12481253    private:
     
    12581263    class ForInNode : public StatementNode, public ThrowableExpressionData {
    12591264    public:
    1260         ForInNode(JSGlobalData*, ExpressionNode*, ExpressionNode*, StatementNode*);
    1261         ForInNode(JSGlobalData*, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset);
     1265        ForInNode(JSGlobalData*, int, ExpressionNode*, ExpressionNode*, StatementNode*);
     1266        ForInNode(JSGlobalData*, int, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset);
    12621267
    12631268    private:
     
    12741279    class ContinueNode : public StatementNode, public ThrowableExpressionData {
    12751280    public:
    1276         ContinueNode(JSGlobalData*);
    1277         ContinueNode(JSGlobalData*, const Identifier&);
     1281        ContinueNode(JSGlobalData*, int);
     1282        ContinueNode(int, const Identifier&);
    12781283       
    12791284    private:
     
    12851290    class BreakNode : public StatementNode, public ThrowableExpressionData {
    12861291    public:
    1287         BreakNode(JSGlobalData*);
    1288         BreakNode(JSGlobalData*, const Identifier&);
     1292        BreakNode(JSGlobalData*, int);
     1293        BreakNode(int, const Identifier&);
    12891294       
    12901295    private:
     
    12961301    class ReturnNode : public StatementNode, public ThrowableExpressionData {
    12971302    public:
    1298         ReturnNode(JSGlobalData*, ExpressionNode* value);
     1303        ReturnNode(int, ExpressionNode* value);
    12991304
    13001305        ExpressionNode* value() { return m_value; }
     
    13101315    class WithNode : public StatementNode {
    13111316    public:
    1312         WithNode(JSGlobalData*, ExpressionNode*, StatementNode*, uint32_t divot, uint32_t expressionLength);
     1317        WithNode(int, ExpressionNode*, StatementNode*, uint32_t divot, uint32_t expressionLength);
    13131318
    13141319    private:
     
    13231328    class LabelNode : public StatementNode, public ThrowableExpressionData {
    13241329    public:
    1325         LabelNode(JSGlobalData*, const Identifier& name, StatementNode*);
     1330        LabelNode(int, const Identifier& name, StatementNode*);
    13261331
    13271332    private:
     
    13341339    class ThrowNode : public StatementNode, public ThrowableExpressionData {
    13351340    public:
    1336         ThrowNode(JSGlobalData*, ExpressionNode*);
     1341        ThrowNode(int, ExpressionNode*);
    13371342
    13381343    private:
     
    13441349    class TryNode : public StatementNode {
    13451350    public:
    1346         TryNode(JSGlobalData*, StatementNode* tryBlock, const Identifier& exceptionIdent, bool catchHasEval, StatementNode* catchBlock, StatementNode* finallyBlock);
     1351        TryNode(int, StatementNode* tryBlock, const Identifier& exceptionIdent, bool catchHasEval, StatementNode* catchBlock, StatementNode* finallyBlock);
    13471352
    13481353    private:
     
    13581363    class ParameterNode : public ParserArenaFreeable {
    13591364    public:
    1360         ParameterNode(JSGlobalData*, const Identifier&);
    1361         ParameterNode(JSGlobalData*, ParameterNode*, const Identifier&);
     1365        ParameterNode(const Identifier&);
     1366        ParameterNode(ParameterNode*, const Identifier&);
    13621367
    13631368        const Identifier& ident() const { return m_ident; }
     
    13901395        typedef DeclarationStacks::FunctionStack FunctionStack;
    13911396
    1392         ScopeNode(JSGlobalData*, bool inStrictContext);
    1393         ScopeNode(JSGlobalData*, const SourceCode&, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, CodeFeatures, int numConstants);
     1397        ScopeNode(JSGlobalData*, int, bool inStrictContext);
     1398        ScopeNode(JSGlobalData*, int, const SourceCode&, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, CodeFeatures, int numConstants);
    13941399
    13951400        using ParserArenaRefCounted::operator new;
     
    14431448    public:
    14441449        static const bool isFunctionNode = false;
    1445         static PassRefPtr<ProgramNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1450        static PassRefPtr<ProgramNode> create(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14461451
    14471452        static const bool scopeIsFunction = false;
    14481453
    14491454    private:
    1450         ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1455        ProgramNode(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14511456
    14521457        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
     
    14561461    public:
    14571462        static const bool isFunctionNode = false;
    1458         static PassRefPtr<EvalNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1463        static PassRefPtr<EvalNode> create(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14591464
    14601465        static const bool scopeIsFunction = false;
    14611466
    14621467    private:
    1463         EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1468        EvalNode(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14641469
    14651470        virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
     
    14781483    public:
    14791484        static const bool isFunctionNode = true;
    1480         static FunctionBodyNode* create(JSGlobalData*, bool isStrictMode);
    1481         static PassRefPtr<FunctionBodyNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1485        static FunctionBodyNode* create(JSGlobalData*, int, bool isStrictMode);
     1486        static PassRefPtr<FunctionBodyNode> create(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14821487
    14831488        FunctionParameters* parameters() const { return m_parameters.get(); }
     
    14941499
    14951500    private:
    1496         FunctionBodyNode(JSGlobalData*, bool inStrictContext);
    1497         FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
     1501        FunctionBodyNode(JSGlobalData*, int, bool inStrictContext);
     1502        FunctionBodyNode(JSGlobalData*, int, SourceElements*, VarStack*, FunctionStack*, IdentifierSet&, const SourceCode&, CodeFeatures, int numConstants);
    14981503
    14991504        Identifier m_ident;
     
    15031508    class FuncExprNode : public ExpressionNode {
    15041509    public:
    1505         FuncExprNode(JSGlobalData*, const Identifier&, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter = 0);
     1510        FuncExprNode(int, const Identifier&, FunctionBodyNode*, const SourceCode&, ParameterNode* = 0);
    15061511
    15071512        FunctionBodyNode* body() { return m_body; }
     
    15171522    class FuncDeclNode : public StatementNode {
    15181523    public:
    1519         FuncDeclNode(JSGlobalData*, const Identifier&, FunctionBodyNode*, const SourceCode&, ParameterNode* = 0);
     1524        FuncDeclNode(int, const Identifier&, FunctionBodyNode*, const SourceCode&, ParameterNode* = 0);
    15201525
    15211526        FunctionBodyNode* body() { return m_body; }
     
    15291534    class CaseClauseNode : public ParserArenaFreeable {
    15301535    public:
    1531         CaseClauseNode(JSGlobalData*, ExpressionNode*, SourceElements* = 0);
     1536        CaseClauseNode(ExpressionNode*, SourceElements* = 0);
    15321537
    15331538        ExpressionNode* expr() const { return m_expr; }
     
    15421547    class ClauseListNode : public ParserArenaFreeable {
    15431548    public:
    1544         ClauseListNode(JSGlobalData*, CaseClauseNode*);
    1545         ClauseListNode(JSGlobalData*, ClauseListNode*, CaseClauseNode*);
     1549        ClauseListNode(CaseClauseNode*);
     1550        ClauseListNode(ClauseListNode*, CaseClauseNode*);
    15461551
    15471552        CaseClauseNode* getClause() const { return m_clause; }
     
    15551560    class CaseBlockNode : public ParserArenaFreeable {
    15561561    public:
    1557         CaseBlockNode(JSGlobalData*, ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2);
     1562        CaseBlockNode(ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2);
    15581563
    15591564        RegisterID* emitBytecodeForBlock(BytecodeGenerator&, RegisterID* input, RegisterID* destination);
     
    15681573    class SwitchNode : public StatementNode {
    15691574    public:
    1570         SwitchNode(JSGlobalData*, ExpressionNode*, CaseBlockNode*);
     1575        SwitchNode(int, ExpressionNode*, CaseBlockNode*);
    15711576
    15721577    private:
Note: See TracChangeset for help on using the changeset viewer.