| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 409059778a6a5f44606f6d0bed20af710cb797ec..0fa581659ff4fc9e94c809016c13672c036514eb 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -570,8 +570,10 @@ Expression* ParserTraits::ExpressionFromString(
|
| }
|
|
|
|
|
| -Expression* ParserTraits::ParseArrayLiteral(bool* ok) {
|
| - return parser_->ParseArrayLiteral(ok);
|
| +Literal* ParserTraits::GetLiteralTheHole(
|
| + int position, AstNodeFactory<AstConstructionVisitor>* factory) {
|
| + return factory->NewLiteral(parser_->isolate()->factory()->the_hole_value(),
|
| + RelocInfo::kNoPosition);
|
| }
|
|
|
|
|
| @@ -580,8 +582,8 @@ Expression* ParserTraits::ParseObjectLiteral(bool* ok) {
|
| }
|
|
|
|
|
| -Expression* ParserTraits::ParseExpression(bool accept_IN, bool* ok) {
|
| - return parser_->ParseExpression(accept_IN, ok);
|
| +Expression* ParserTraits::ParseAssignmentExpression(bool accept_IN, bool* ok) {
|
| + return parser_->ParseAssignmentExpression(accept_IN, ok);
|
| }
|
|
|
|
|
| @@ -594,6 +596,7 @@ Parser::Parser(CompilationInfo* info)
|
| : ParserBase<ParserTraits>(&scanner_,
|
| info->isolate()->stack_guard()->real_climit(),
|
| info->extension(),
|
| + info->zone(),
|
| this),
|
| isolate_(info->isolate()),
|
| symbol_cache_(0, info->zone()),
|
| @@ -604,7 +607,6 @@ Parser::Parser(CompilationInfo* info)
|
| target_stack_(NULL),
|
| pre_parse_data_(NULL),
|
| fni_(NULL),
|
| - zone_(info->zone()),
|
| info_(info) {
|
| ASSERT(!script_.is_null());
|
| isolate_->set_ast_node_id(0);
|
| @@ -2874,23 +2876,6 @@ Statement* Parser::ParseForStatement(ZoneStringList* labels, bool* ok) {
|
| }
|
|
|
|
|
| -// Precedence = 1
|
| -Expression* Parser::ParseExpression(bool accept_IN, bool* ok) {
|
| - // Expression ::
|
| - // AssignmentExpression
|
| - // Expression ',' AssignmentExpression
|
| -
|
| - Expression* result = ParseAssignmentExpression(accept_IN, CHECK_OK);
|
| - while (peek() == Token::COMMA) {
|
| - Expect(Token::COMMA, CHECK_OK);
|
| - int pos = position();
|
| - Expression* right = ParseAssignmentExpression(accept_IN, CHECK_OK);
|
| - result = factory()->NewBinaryOperation(Token::COMMA, result, right, pos);
|
| - }
|
| - return result;
|
| -}
|
| -
|
| -
|
| // Precedence = 2
|
| Expression* Parser::ParseAssignmentExpression(bool accept_IN, bool* ok) {
|
| // AssignmentExpression ::
|
| @@ -3462,34 +3447,6 @@ void Parser::ReportInvalidPreparseData(Handle<String> name, bool* ok) {
|
| }
|
|
|
|
|
| -Expression* Parser::ParseArrayLiteral(bool* ok) {
|
| - // ArrayLiteral ::
|
| - // '[' Expression? (',' Expression?)* ']'
|
| -
|
| - int pos = peek_position();
|
| - ZoneList<Expression*>* values = new(zone()) ZoneList<Expression*>(4, zone());
|
| - Expect(Token::LBRACK, CHECK_OK);
|
| - while (peek() != Token::RBRACK) {
|
| - Expression* elem;
|
| - if (peek() == Token::COMMA) {
|
| - elem = GetLiteralTheHole(peek_position());
|
| - } else {
|
| - elem = ParseAssignmentExpression(true, CHECK_OK);
|
| - }
|
| - values->Add(elem, zone());
|
| - if (peek() != Token::RBRACK) {
|
| - Expect(Token::COMMA, CHECK_OK);
|
| - }
|
| - }
|
| - Expect(Token::RBRACK, CHECK_OK);
|
| -
|
| - // Update the scope information before the pre-parsing bailout.
|
| - int literal_index = function_state_->NextMaterializedLiteralIndex();
|
| -
|
| - return factory()->NewArrayLiteral(values, literal_index, pos);
|
| -}
|
| -
|
| -
|
| bool CompileTimeValue::IsCompileTimeValue(Expression* expression) {
|
| if (expression->AsLiteral() != NULL) return true;
|
| MaterializedLiteral* lit = expression->AsMaterializedLiteral();
|
| @@ -4258,12 +4215,6 @@ Literal* Parser::GetLiteralUndefined(int position) {
|
| }
|
|
|
|
|
| -Literal* Parser::GetLiteralTheHole(int position) {
|
| - return factory()->NewLiteral(
|
| - isolate()->factory()->the_hole_value(), RelocInfo::kNoPosition);
|
| -}
|
| -
|
| -
|
| void Parser::MarkAsLValue(Expression* expression) {
|
| VariableProxy* proxy = expression != NULL
|
| ? expression->AsVariableProxy()
|
|
|