Skip to content
  • msaboff@apple.com's avatar
    Towards 8-bit Strings: Move Lexer and Parser Objects out of JSGlobalData · 2e5003e8
    msaboff@apple.com authored
    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.
    
    * CMakeLists.txt:
    * GNUmakefile.list.am:
    * JavaScriptCore.gypi:
    * JavaScriptCore.pro:
    * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * bytecompiler/NodesCodegen.cpp:
    (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):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@98887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    2e5003e8