From d6a599dbc9d824a462b2b206316e102bf8136446 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 11 Jul 2012 13:45:28 +0200 Subject: Imported WebKit commit 8ff1f22783a32de82fee915abd55bd1b298f2644 (http://svn.webkit.org/repository/webkit/trunk@122325) New snapshot that should work with the latest Qt build system changes --- Source/JavaScriptCore/parser/ASTBuilder.h | 18 +++++++++--------- Source/JavaScriptCore/parser/NodeConstructors.h | 23 +++++++---------------- Source/JavaScriptCore/parser/Nodes.h | 25 ++++++------------------- Source/JavaScriptCore/parser/Parser.cpp | 7 ++----- Source/JavaScriptCore/parser/SyntaxChecker.h | 4 ++-- 5 files changed, 26 insertions(+), 51 deletions(-) (limited to 'Source/JavaScriptCore/parser') diff --git a/Source/JavaScriptCore/parser/ASTBuilder.h b/Source/JavaScriptCore/parser/ASTBuilder.h index 0eb60cf89..d4c170617 100644 --- a/Source/JavaScriptCore/parser/ASTBuilder.h +++ b/Source/JavaScriptCore/parser/ASTBuilder.h @@ -247,11 +247,11 @@ public: return new (m_globalData) ConditionalNode(lineNumber, condition, lhs, rhs); } - ExpressionNode* createAssignResolve(int lineNumber, const Identifier& ident, ExpressionNode* rhs, bool rhsHasAssignment, int start, int divot, int end) + ExpressionNode* createAssignResolve(int lineNumber, const Identifier& ident, ExpressionNode* rhs, int start, int divot, int end) { if (rhs->isFuncExprNode()) static_cast(rhs)->body()->setInferredName(ident); - AssignResolveNode* node = new (m_globalData) AssignResolveNode(lineNumber, ident, rhs, rhsHasAssignment); + AssignResolveNode* node = new (m_globalData) AssignResolveNode(lineNumber, ident, rhs); setExceptionLocation(node, start, divot, end); return node; } @@ -347,9 +347,9 @@ public: return result; } - StatementNode* createForLoop(int lineNumber, ExpressionNode* initializer, ExpressionNode* condition, ExpressionNode* iter, StatementNode* statements, bool b, int start, int end) + StatementNode* createForLoop(int lineNumber, ExpressionNode* initializer, ExpressionNode* condition, ExpressionNode* iter, StatementNode* statements, int start, int end) { - ForNode* result = new (m_globalData) ForNode(lineNumber, initializer, condition, iter, statements, b); + ForNode* result = new (m_globalData) ForNode(lineNumber, initializer, condition, iter, statements); result->setLoc(start, end); return result; } @@ -364,7 +364,7 @@ public: StatementNode* createForInLoop(int lineNumber, ExpressionNode* lhs, ExpressionNode* iter, StatementNode* statements, int eStart, int eDivot, int eEnd, int start, int end) { - ForInNode* result = new (m_globalData) ForInNode(m_globalData, lineNumber, lhs, iter, statements); + ForInNode* result = new (m_globalData) ForInNode(lineNumber, lhs, iter, statements); result->setLoc(start, end); setExceptionLocation(result, eStart, eDivot, eEnd); return result; @@ -907,14 +907,14 @@ ExpressionNode* ASTBuilder::makeBinaryNode(int lineNumber, int token, pairisLocation()) - return new (m_globalData) AssignErrorNode(lineNumber, loc, op, expr, divot, divot - start, end - divot); + return new (m_globalData) AssignErrorNode(lineNumber, divot, divot - start, end - divot); if (loc->isResolveNode()) { ResolveNode* resolve = static_cast(loc); if (op == OpEqual) { if (expr->isFuncExprNode()) static_cast(expr)->body()->setInferredName(resolve->identifier()); - AssignResolveNode* node = new (m_globalData) AssignResolveNode(lineNumber, resolve->identifier(), expr, exprHasAssignments); + AssignResolveNode* node = new (m_globalData) AssignResolveNode(lineNumber, resolve->identifier(), expr); setExceptionLocation(node, start, divot, end); return node; } @@ -944,7 +944,7 @@ ExpressionNode* ASTBuilder::makeAssignNode(int lineNumber, ExpressionNode* loc, ExpressionNode* ASTBuilder::makePrefixNode(int lineNumber, ExpressionNode* expr, Operator op, int start, int divot, int end) { if (!expr->isLocation()) - return new (m_globalData) PrefixErrorNode(lineNumber, expr, op, divot, divot - start, end - divot); + return new (m_globalData) PrefixErrorNode(lineNumber, op, divot, divot - start, end - divot); if (expr->isResolveNode()) { ResolveNode* resolve = static_cast(expr); @@ -966,7 +966,7 @@ ExpressionNode* ASTBuilder::makePrefixNode(int lineNumber, ExpressionNode* expr, ExpressionNode* ASTBuilder::makePostfixNode(int lineNumber, ExpressionNode* expr, Operator op, int start, int divot, int end) { if (!expr->isLocation()) - return new (m_globalData) PostfixErrorNode(lineNumber, expr, op, divot, divot - start, end - divot); + return new (m_globalData) PostfixErrorNode(lineNumber, op, divot, divot - start, end - divot); if (expr->isResolveNode()) { ResolveNode* resolve = static_cast(expr); diff --git a/Source/JavaScriptCore/parser/NodeConstructors.h b/Source/JavaScriptCore/parser/NodeConstructors.h index e496d2342..be50eeafe 100644 --- a/Source/JavaScriptCore/parser/NodeConstructors.h +++ b/Source/JavaScriptCore/parser/NodeConstructors.h @@ -317,10 +317,9 @@ namespace JSC { { } - inline PostfixErrorNode::PostfixErrorNode(int lineNumber, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) + inline PostfixErrorNode::PostfixErrorNode(int lineNumber, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) : ExpressionNode(lineNumber) , ThrowableSubExpressionData(divot, startOffset, endOffset) - , m_expr(expr) , m_operator(oper) { } @@ -396,10 +395,9 @@ namespace JSC { { } - inline PrefixErrorNode::PrefixErrorNode(int lineNumber, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) + inline PrefixErrorNode::PrefixErrorNode(int lineNumber, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) : ExpressionNode(lineNumber) , ThrowableExpressionData(divot, startOffset, endOffset) - , m_expr(expr) , m_operator(oper) { } @@ -592,11 +590,10 @@ namespace JSC { { } - inline AssignResolveNode::AssignResolveNode(int lineNumber, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) + inline AssignResolveNode::AssignResolveNode(int lineNumber, const Identifier& ident, ExpressionNode* right) : ExpressionNode(lineNumber) , m_ident(ident) , m_right(right) - , m_rightHasAssignments(rightHasAssignments) { } @@ -644,12 +641,9 @@ namespace JSC { { } - inline AssignErrorNode::AssignErrorNode(int lineNumber, ExpressionNode* left, Operator oper, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset) + inline AssignErrorNode::AssignErrorNode(int lineNumber, unsigned divot, unsigned startOffset, unsigned endOffset) : ExpressionNode(lineNumber) , ThrowableExpressionData(divot, startOffset, endOffset) - , m_left(left) - , m_operator(oper) - , m_right(right) { } @@ -719,13 +713,12 @@ namespace JSC { { } - inline ForNode::ForNode(int lineNumber, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl) + inline ForNode::ForNode(int lineNumber, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement) : StatementNode(lineNumber) , m_expr1(expr1) , m_expr2(expr2) , m_expr3(expr3) , m_statement(statement) - , m_expr1WasVarDecl(expr1 && expr1WasVarDecl) { ASSERT(statement); } @@ -865,9 +858,8 @@ namespace JSC { { } - inline ForInNode::ForInNode(JSGlobalData* globalData, int lineNumber, ExpressionNode* l, ExpressionNode* expr, StatementNode* statement) + inline ForInNode::ForInNode(int lineNumber, ExpressionNode* l, ExpressionNode* expr, StatementNode* statement) : StatementNode(lineNumber) - , m_ident(globalData->propertyNames->nullIdentifier) , m_init(0) , m_lexpr(l) , m_expr(expr) @@ -878,7 +870,6 @@ namespace JSC { inline ForInNode::ForInNode(JSGlobalData* globalData, int lineNumber, const Identifier& ident, ExpressionNode* in, ExpressionNode* expr, StatementNode* statement, int divot, int startOffset, int endOffset) : StatementNode(lineNumber) - , m_ident(ident) , m_init(0) , m_lexpr(new (globalData) ResolveNode(lineNumber, ident, divot - startOffset)) , m_expr(expr) @@ -886,7 +877,7 @@ namespace JSC { , m_identIsVarDecl(true) { if (in) { - AssignResolveNode* node = new (globalData) AssignResolveNode(lineNumber, ident, in, true); + AssignResolveNode* node = new (globalData) AssignResolveNode(lineNumber, ident, in); node->setExceptionSourceCode(divot, divot - startOffset, endOffset - divot); m_init = node; } diff --git a/Source/JavaScriptCore/parser/Nodes.h b/Source/JavaScriptCore/parser/Nodes.h index 5c90bb9fe..5b15be44c 100644 --- a/Source/JavaScriptCore/parser/Nodes.h +++ b/Source/JavaScriptCore/parser/Nodes.h @@ -546,8 +546,6 @@ namespace JSC { const Identifier& m_ident; ArgumentsNode* m_args; - size_t m_index; // Used by LocalVarFunctionCallNode. - size_t m_scopeDepth; // Used by ScopedVarFunctionCallNode and NonLocalVarFunctionCallNode }; class FunctionCallBracketNode : public ExpressionNode, public ThrowableSubExpressionData { @@ -635,12 +633,11 @@ namespace JSC { class PostfixErrorNode : public ExpressionNode, public ThrowableSubExpressionData { public: - PostfixErrorNode(int, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset); + PostfixErrorNode(int, Operator, unsigned divot, unsigned startOffset, unsigned endOffset); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); - ExpressionNode* m_expr; Operator m_operator; }; @@ -754,12 +751,11 @@ namespace JSC { class PrefixErrorNode : public ExpressionNode, public ThrowableExpressionData { public: - PrefixErrorNode(int, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset); + PrefixErrorNode(int, Operator, unsigned divot, unsigned startOffset, unsigned endOffset); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); - ExpressionNode* m_expr; Operator m_operator; }; @@ -1004,22 +1000,19 @@ namespace JSC { const Identifier& m_ident; ExpressionNode* m_right; - size_t m_index; // Used by ReadModifyLocalVarNode. Operator m_operator; bool m_rightHasAssignments; }; class AssignResolveNode : public ExpressionNode, public ThrowableExpressionData { public: - AssignResolveNode(int, const Identifier&, ExpressionNode* right, bool rightHasAssignments); + AssignResolveNode(int, const Identifier&, ExpressionNode* right); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); const Identifier& m_ident; ExpressionNode* m_right; - size_t m_index; // Used by ReadModifyLocalVarNode. - bool m_rightHasAssignments; }; class ReadModifyBracketNode : public ExpressionNode, public ThrowableSubExpressionData { @@ -1080,14 +1073,10 @@ namespace JSC { class AssignErrorNode : public ExpressionNode, public ThrowableExpressionData { public: - AssignErrorNode(int, ExpressionNode* left, Operator, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset); + AssignErrorNode(int, unsigned divot, unsigned startOffset, unsigned endOffset); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); - - ExpressionNode* m_left; - Operator m_operator; - ExpressionNode* m_right; }; typedef Vector ExpressionVector; @@ -1254,7 +1243,7 @@ namespace JSC { class ForNode : public StatementNode { public: - ForNode(int, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode*, bool expr1WasVarDecl); + ForNode(int, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode*); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); @@ -1263,18 +1252,16 @@ namespace JSC { ExpressionNode* m_expr2; ExpressionNode* m_expr3; StatementNode* m_statement; - bool m_expr1WasVarDecl; }; class ForInNode : public StatementNode, public ThrowableExpressionData { public: - ForInNode(JSGlobalData*, int, ExpressionNode*, ExpressionNode*, StatementNode*); + ForInNode(int, ExpressionNode*, ExpressionNode*, StatementNode*); ForInNode(JSGlobalData*, int, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset); private: virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0); - const Identifier& m_ident; ExpressionNode* m_init; ExpressionNode* m_lexpr; ExpressionNode* m_expr; diff --git a/Source/JavaScriptCore/parser/Parser.cpp b/Source/JavaScriptCore/parser/Parser.cpp index d88a9a8b7..558f50e5f 100644 --- a/Source/JavaScriptCore/parser/Parser.cpp +++ b/Source/JavaScriptCore/parser/Parser.cpp @@ -260,13 +260,12 @@ template TreeExpression Parser::parseVarDeclarati int varDivot = tokenStart() + 1; initStart = tokenStart(); next(TreeBuilder::DontBuildStrings); // consume '=' - int initialAssignments = m_assignmentCount; TreeExpression initializer = parseAssignmentExpression(context); initEnd = lastTokenEnd(); lastInitializer = initializer; failIfFalse(initializer); - TreeExpression node = context.createAssignResolve(m_lexer->lastLineNumber(), *name, initializer, initialAssignments != m_assignmentCount, varStart, varDivot, lastTokenEnd()); + TreeExpression node = context.createAssignResolve(m_lexer->lastLineNumber(), *name, initializer, varStart, varDivot, lastTokenEnd()); if (!varDecls) varDecls = node; else @@ -314,14 +313,12 @@ template TreeStatement Parser::parseForStatement( int declsStart = 0; int declsEnd = 0; TreeExpression decls = 0; - bool hasDeclaration = false; if (match(VAR)) { /* for (var IDENT in expression) statement for (var IDENT = expression in expression) statement for (var varDeclarationList; expressionOpt; expressionOpt) */ - hasDeclaration = true; const Identifier* forInTarget = 0; TreeExpression forInInitializer = 0; m_allowsIn = false; @@ -391,7 +388,7 @@ template TreeStatement Parser::parseForStatement( TreeStatement statement = parseStatement(context, unused); endLoop(); failIfFalse(statement); - return context.createForLoop(m_lexer->lastLineNumber(), decls, condition, increment, statement, hasDeclaration, startLine, endLine); + return context.createForLoop(m_lexer->lastLineNumber(), decls, condition, increment, statement, startLine, endLine); } // For-in loop diff --git a/Source/JavaScriptCore/parser/SyntaxChecker.h b/Source/JavaScriptCore/parser/SyntaxChecker.h index c2c93756d..fe3ce714f 100644 --- a/Source/JavaScriptCore/parser/SyntaxChecker.h +++ b/Source/JavaScriptCore/parser/SyntaxChecker.h @@ -148,7 +148,7 @@ public: ExpressionType createNewExpr(int, ExpressionType, int, int, int, int) { return NewExpr; } ExpressionType createNewExpr(int, ExpressionType, int, int) { return NewExpr; } ExpressionType createConditionalExpr(int, ExpressionType, ExpressionType, ExpressionType) { return ConditionalExpr; } - ExpressionType createAssignResolve(int, const Identifier&, ExpressionType, bool, int, int, int) { return AssignmentExpr; } + ExpressionType createAssignResolve(int, const Identifier&, ExpressionType, int, int, int) { return AssignmentExpr; } ExpressionType createFunctionExpr(int, const Identifier*, int, int, int, int, int, int) { return FunctionExpr; } int createFunctionBody(int, bool) { return 1; } int createArguments() { return 1; } @@ -183,7 +183,7 @@ public: int createExprStatement(int, int, int, int) { return 1; } int createIfStatement(int, int, int, int, int) { return 1; } int createIfStatement(int, int, int, int, int, int) { return 1; } - int createForLoop(int, int, int, int, int, bool, int, int) { return 1; } + int createForLoop(int, int, int, int, int, int, int) { return 1; } int createForInLoop(int, const Identifier*, int, int, int, int, int, int, int, int, int, int) { return 1; } int createForInLoop(int, int, int, int, int, int, int, int, int) { return 1; } int createEmptyStatement(int) { return 1; } -- cgit v1.2.1