-
commit-queue@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=53003 Patch by Peter Wang <peter.wang@torchmobile.com.cn> on 2012-08-01 Reviewed by Geoffrey Garen. Source/JavaScriptCore: Add a counter in lexer to record the column of each token. Debugger will use column info in "Pretty Print" debug mode of Inspector. * bytecode/Opcode.h: (JSC): (JSC::padOpcodeName): * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitDebugHook): * bytecompiler/BytecodeGenerator.h: (BytecodeGenerator): * bytecompiler/NodesCodegen.cpp: (JSC::ArrayNode::toArgumentList): (JSC::ApplyFunctionCallDotNode::emitBytecode): (JSC::ConditionalNode::emitBytecode): (JSC::ConstStatementNode::emitBytecode): (JSC::EmptyStatementNode::emitBytecode): (JSC::DebuggerStatementNode::emitBytecode): (JSC::ExprStatementNode::emitBytecode): (JSC::VarStatementNode::emitBytecode): (JSC::IfNode::emitBytecode): (JSC::IfElseNode::emitBytecode): (JSC::DoWhileNode::emitBytecode): (JSC::WhileNode::emitBytecode): (JSC::ForNode::emitBytecode): (JSC::ForInNode::emitBytecode): (JSC::ContinueNode::emitBytecode): (JSC::BreakNode::emitBytecode): (JSC::ReturnNode::emitBytecode): (JSC::WithNode::emitBytecode): (JSC::SwitchNode::emitBytecode): (JSC::LabelNode::emitBytecode): (JSC::ThrowNode::emitBytecode): (JSC::TryNode::emitBytecode): (JSC::ProgramNode::emitBytecode): (JSC::EvalNode::emitBytecode): (JSC::FunctionBodyNode::emitBytecode): * debugger/Debugger.h: * interpreter/Interpreter.cpp: (JSC::Interpreter::unwindCallFrame): (JSC::Interpreter::throwException): (JSC::Interpreter::debug): * interpreter/Interpreter.h: (Interpreter): * jit/JITOpcodes.cpp: (JSC::JIT::emit_op_debug): * jit/JITOpcodes32_64.cpp: (JSC::JIT::emit_op_debug): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL): * parser/ASTBuilder.h: (ASTBuilder): (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::createArgumentsList): (JSC::ASTBuilder::createPropertyList): (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/Lexer.cpp: (JSC::::setCode): (JSC::::internalShift): (JSC::::shift): (JSC::::lex): * parser/Lexer.h: (Lexer): (JSC::Lexer::currentColumnNumber): (JSC::::lexExpectIdentifier): * parser/NodeConstructors.h: (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::ArrayNode::ArrayNode): (JSC::PropertyListNode::PropertyListNode): (JSC::ObjectLiteralNode::ObjectLiteralNode): (JSC::BracketAccessorNode::BracketAccessorNode): (JSC::DotAccessorNode::DotAccessorNode): (JSC::ArgumentListNode::ArgumentListNode): (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::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::FuncExprNode::FuncExprNode): (JSC::FuncDeclNode::FuncDeclNode): (JSC::SwitchNode::SwitchNode): (JSC::ConstDeclNode::ConstDeclNode): (JSC::BlockNode::BlockNode): (JSC::ForInNode::ForInNode): * parser/Nodes.cpp: (JSC::StatementNode::setLoc): (JSC): (JSC::ScopeNode::ScopeNode): (JSC::ProgramNode::ProgramNode): (JSC::ProgramNode::create): (JSC::EvalNode::EvalNode): (JSC::EvalNode::create): (JSC::FunctionBodyNode::FunctionBodyNode): (JSC::FunctionBodyNode::create): * parser/Nodes.h: (Node): (JSC::Node::columnNo): (ExpressionNode): (StatementNode): (JSC::StatementNode::column): (NullNode): (BooleanNode): (NumberNode): (StringNode): (RegExpNode): (ThisNode): (ResolveNode): (ArrayNode): (PropertyListNode): (ObjectLiteralNode): (BracketAccessorNode): (DotAccessorNode): (ArgumentListNode): (NewExprNode): (EvalFunctionCallNode): (FunctionCallValueNode): (FunctionCallResolveNode): (FunctionCallBracketNode): (FunctionCallDotNode): (CallFunctionCallDotNode): (ApplyFunctionCallDotNode): (PrePostResolveNode): (PostfixResolveNode): (PostfixBracketNode): (PostfixDotNode): (PostfixErrorNode): (DeleteResolveNode): (DeleteBracketNode): (DeleteDotNode): (DeleteValueNode): (VoidNode): (TypeOfResolveNode): (TypeOfValueNode): (PrefixResolveNode): (PrefixBracketNode): (PrefixDotNode): (PrefixErrorNode): (UnaryOpNode): (UnaryPlusNode): (NegateNode): (BitwiseNotNode): (LogicalNotNode): (BinaryOpNode): (MultNode): (DivNode): (ModNode): (AddNode): (SubNode): (LeftShiftNode): (RightShiftNode): (UnsignedRightShiftNode): (LessNode): (GreaterNode): (LessEqNode): (GreaterEqNode): (ThrowableBinaryOpNode): (InstanceOfNode): (InNode): (EqualNode): (NotEqualNode): (StrictEqualNode): (NotStrictEqualNode): (BitAndNode): (BitOrNode): (BitXOrNode): (LogicalOpNode): (ConditionalNode): (ReadModifyResolveNode): (AssignResolveNode): (ReadModifyBracketNode): (AssignBracketNode): (AssignDotNode): (ReadModifyDotNode): (AssignErrorNode): (CommaNode): (ConstDeclNode): (ConstStatementNode): (BlockNode): (EmptyStatementNode): (DebuggerStatementNode): (ExprStatementNode): (VarStatementNode): (IfNode): (IfElseNode): (DoWhileNode): (WhileNode): (ForNode): (ForInNode): (ContinueNode): (BreakNode): (ReturnNode): (WithNode): (LabelNode): (ThrowNode): (TryNode): (ScopeNode): (ProgramNode): (EvalNode): (FunctionBodyNode): (FuncExprNode): (FuncDeclNode): (SwitchNode): * parser/Parser.cpp: (JSC::::parseSourceElements): (JSC::::parseVarDeclaration): (JSC::::parseConstDeclaration): (JSC::::parseDoWhileStatement): (JSC::::parseWhileStatement): (JSC::::parseVarDeclarationList): (JSC::::parseConstDeclarationList): (JSC::::parseForStatement): (JSC::::parseBreakStatement): (JSC::::parseContinueStatement): (JSC::::parseReturnStatement): (JSC::::parseThrowStatement): (JSC::::parseWithStatement): (JSC::::parseSwitchStatement): (JSC::::parseTryStatement): (JSC::::parseDebuggerStatement): (JSC::::parseBlockStatement): (JSC::::parseStatement): (JSC::::parseFunctionBody): (JSC::::parseFunctionInfo): (JSC::::parseFunctionDeclaration): (JSC::::parseExpressionOrLabelStatement): (JSC::::parseExpressionStatement): (JSC::::parseIfStatement): (JSC::::parseExpression): (JSC::::parseAssignmentExpression): (JSC::::parseConditionalExpression): (JSC::::parseBinaryExpression): (JSC::::parseProperty): (JSC::::parseObjectLiteral): (JSC::::parseStrictObjectLiteral): (JSC::::parseArrayLiteral): (JSC::::parsePrimaryExpression): (JSC::::parseArguments): (JSC::::parseMemberExpression): (JSC::::parseUnaryExpression): * parser/Parser.h: (JSC::Parser::next): (JSC::Parser::nextExpectIdentifier): (JSC::Parser::tokenStart): (JSC::Parser::tokenLine): (JSC::Parser::tokenEnd): (JSC::Parser::tokenLocation): (Parser): (JSC::Parser::getTokenName): (JSC::::parse): * parser/ParserTokens.h: (JSC::JSTokenLocation::JSTokenLocation): (JSTokenLocation): (JSToken): * parser/SourceProviderCacheItem.h: (JSC::SourceProviderCacheItem::closeBraceToken): * parser/SyntaxChecker.h: (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::createArgumentsList): (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): Source/WebCore: As JSC is enabled to provide column info of statement, ScriptDebugServer can use it to support "Pretty Print" debug mode. No new test case for this patch. * bindings/js/ScriptDebugServer.cpp: (WebCore::ScriptDebugServer::setBreakpoint): (WebCore::ScriptDebugServer::removeBreakpoint): (WebCore): (WebCore::ScriptDebugServer::updateCurrentStatementPosition): (WebCore::ScriptDebugServer::hasBreakpoint): (WebCore::ScriptDebugServer::createCallFrameAndPauseIfNeeded): (WebCore::ScriptDebugServer::updateCallFrameAndPauseIfNeeded): (WebCore::ScriptDebugServer::callEvent): (WebCore::ScriptDebugServer::atStatement): (WebCore::ScriptDebugServer::returnEvent): (WebCore::ScriptDebugServer::exception): (WebCore::ScriptDebugServer::willExecuteProgram): (WebCore::ScriptDebugServer::didExecuteProgram): (WebCore::ScriptDebugServer::didReachBreakpoint): * bindings/js/ScriptDebugServer.h: (ScriptDebugServer): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@124406 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3772d07d