Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(571)

Side by Side Diff: src/parsing/pattern-rewriter.cc

Issue 2109773004: Move RelocInfo::kNoPosition. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@removedead
Patch Set: rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser-base.h ('k') | src/parsing/preparser.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/ast/ast.h" 5 #include "src/ast/ast.h"
6 #include "src/messages.h" 6 #include "src/messages.h"
7 #include "src/parsing/parameter-initializer-rewriter.h" 7 #include "src/parsing/parameter-initializer-rewriter.h"
8 #include "src/parsing/parser.h" 8 #include "src/parsing/parser.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 proxy, descriptor_->mode, descriptor_->scope, 152 proxy, descriptor_->mode, descriptor_->scope,
153 descriptor_->declaration_pos); 153 descriptor_->declaration_pos);
154 Variable* var = 154 Variable* var =
155 parser_->Declare(declaration, descriptor_->declaration_kind, 155 parser_->Declare(declaration, descriptor_->declaration_kind,
156 descriptor_->mode != VAR, ok_, descriptor_->hoist_scope); 156 descriptor_->mode != VAR, ok_, descriptor_->hoist_scope);
157 if (!*ok_) return; 157 if (!*ok_) return;
158 DCHECK_NOT_NULL(var); 158 DCHECK_NOT_NULL(var);
159 DCHECK(!proxy->is_resolved() || proxy->var() == var); 159 DCHECK(!proxy->is_resolved() || proxy->var() == var);
160 var->set_initializer_position(initializer_position_); 160 var->set_initializer_position(initializer_position_);
161 161
162 DCHECK(initializer_position_ != RelocInfo::kNoPosition); 162 DCHECK(initializer_position_ != kNoSourcePosition);
163 163
164 Scope* declaration_scope = IsLexicalVariableMode(descriptor_->mode) 164 Scope* declaration_scope = IsLexicalVariableMode(descriptor_->mode)
165 ? descriptor_->scope 165 ? descriptor_->scope
166 : descriptor_->scope->DeclarationScope(); 166 : descriptor_->scope->DeclarationScope();
167 if (declaration_scope->num_var_or_const() > kMaxNumFunctionLocals) { 167 if (declaration_scope->num_var_or_const() > kMaxNumFunctionLocals) {
168 parser_->ReportMessage(MessageTemplate::kTooManyVariables); 168 parser_->ReportMessage(MessageTemplate::kTooManyVariables);
169 *ok_ = false; 169 *ok_ = false;
170 return; 170 return;
171 } 171 }
172 if (names_) { 172 if (names_) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // Note that the function does different things depending on 241 // Note that the function does different things depending on
242 // the number of arguments (1 or 2). 242 // the number of arguments (1 or 2).
243 initialize = factory()->NewCallRuntime(Runtime::kInitializeConstGlobal, 243 initialize = factory()->NewCallRuntime(Runtime::kInitializeConstGlobal,
244 arguments, value->position()); 244 arguments, value->position());
245 value = NULL; // zap the value to avoid the unnecessary assignment 245 value = NULL; // zap the value to avoid the unnecessary assignment
246 } else { 246 } else {
247 // Add language mode. 247 // Add language mode.
248 // We may want to pass singleton to avoid Literal allocations. 248 // We may want to pass singleton to avoid Literal allocations.
249 LanguageMode language_mode = initialization_scope->language_mode(); 249 LanguageMode language_mode = initialization_scope->language_mode();
250 arguments->Add( 250 arguments->Add(
251 factory()->NewNumberLiteral(language_mode, RelocInfo::kNoPosition), 251 factory()->NewNumberLiteral(language_mode, kNoSourcePosition),
252 zone()); 252 zone());
253 253
254 // Be careful not to assign a value to the global variable if 254 // Be careful not to assign a value to the global variable if
255 // we're in a with. The initialization value should not 255 // we're in a with. The initialization value should not
256 // necessarily be stored in the global object in that case, 256 // necessarily be stored in the global object in that case,
257 // which is why we need to generate a separate assignment node. 257 // which is why we need to generate a separate assignment node.
258 if (value != NULL && !descriptor_->scope->inside_with()) { 258 if (value != NULL && !descriptor_->scope->inside_with()) {
259 arguments->Add(value, zone()); 259 arguments->Add(value, zone());
260 // Construct the call to Runtime_InitializeVarGlobal 260 // Construct the call to Runtime_InitializeVarGlobal
261 // and add it to the initialization statement block. 261 // and add it to the initialization statement block.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 factory()->NewExpressionStatement(assignment, pos), zone()); 303 factory()->NewExpressionStatement(assignment, pos), zone());
304 } 304 }
305 } 305 }
306 306
307 307
308 Variable* Parser::PatternRewriter::CreateTempVar(Expression* value) { 308 Variable* Parser::PatternRewriter::CreateTempVar(Expression* value) {
309 auto temp = scope()->NewTemporary(ast_value_factory()->empty_string()); 309 auto temp = scope()->NewTemporary(ast_value_factory()->empty_string());
310 if (value != nullptr) { 310 if (value != nullptr) {
311 auto assignment = factory()->NewAssignment( 311 auto assignment = factory()->NewAssignment(
312 Token::ASSIGN, factory()->NewVariableProxy(temp), value, 312 Token::ASSIGN, factory()->NewVariableProxy(temp), value,
313 RelocInfo::kNoPosition); 313 kNoSourcePosition);
314 314
315 block_->statements()->Add( 315 block_->statements()->Add(
316 factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition), 316 factory()->NewExpressionStatement(assignment, kNoSourcePosition),
317 zone()); 317 zone());
318 } 318 }
319 return temp; 319 return temp;
320 } 320 }
321 321
322 322
323 void Parser::PatternRewriter::VisitRewritableExpression( 323 void Parser::PatternRewriter::VisitRewritableExpression(
324 RewritableExpression* node) { 324 RewritableExpression* node) {
325 // If this is not a destructuring assignment... 325 // If this is not a destructuring assignment...
326 if (!IsAssignmentContext() || !node->expression()->IsAssignment()) { 326 if (!IsAssignmentContext() || !node->expression()->IsAssignment()) {
(...skipping 14 matching lines...) Expand all
341 auto value = initializer; 341 auto value = initializer;
342 342
343 if (IsInitializerContext()) { 343 if (IsInitializerContext()) {
344 // let {<pattern> = <init>} = <value> 344 // let {<pattern> = <init>} = <value>
345 // becomes 345 // becomes
346 // temp = <value>; 346 // temp = <value>;
347 // <pattern> = temp === undefined ? <init> : temp; 347 // <pattern> = temp === undefined ? <init> : temp;
348 auto temp_var = CreateTempVar(current_value_); 348 auto temp_var = CreateTempVar(current_value_);
349 Expression* is_undefined = factory()->NewCompareOperation( 349 Expression* is_undefined = factory()->NewCompareOperation(
350 Token::EQ_STRICT, factory()->NewVariableProxy(temp_var), 350 Token::EQ_STRICT, factory()->NewVariableProxy(temp_var),
351 factory()->NewUndefinedLiteral(RelocInfo::kNoPosition), 351 factory()->NewUndefinedLiteral(kNoSourcePosition), kNoSourcePosition);
352 RelocInfo::kNoPosition);
353 value = factory()->NewConditional(is_undefined, initializer, 352 value = factory()->NewConditional(is_undefined, initializer,
354 factory()->NewVariableProxy(temp_var), 353 factory()->NewVariableProxy(temp_var),
355 RelocInfo::kNoPosition); 354 kNoSourcePosition);
356 } 355 }
357 356
358 PatternContext old_context = SetAssignmentContextIfNeeded(initializer); 357 PatternContext old_context = SetAssignmentContextIfNeeded(initializer);
359 int pos = assign->position(); 358 int pos = assign->position();
360 Block* old_block = block_; 359 Block* old_block = block_;
361 block_ = factory()->NewBlock(nullptr, 8, true, pos); 360 block_ = factory()->NewBlock(nullptr, 8, true, pos);
362 Variable* temp = nullptr; 361 Variable* temp = nullptr;
363 Expression* pattern = assign->target(); 362 Expression* pattern = assign->target();
364 Expression* old_value = current_value_; 363 Expression* old_value = current_value_;
365 current_value_ = value; 364 current_value_ = value;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 for (ObjectLiteralProperty* property : *pattern->properties()) { 421 for (ObjectLiteralProperty* property : *pattern->properties()) {
423 PatternContext context = SetInitializerContextIfNeeded(property->value()); 422 PatternContext context = SetInitializerContextIfNeeded(property->value());
424 423
425 // Computed property names contain expressions which might require 424 // Computed property names contain expressions which might require
426 // scope rewriting. 425 // scope rewriting.
427 if (!property->key()->IsLiteral()) RewriteParameterScopes(property->key()); 426 if (!property->key()->IsLiteral()) RewriteParameterScopes(property->key());
428 427
429 RecurseIntoSubpattern( 428 RecurseIntoSubpattern(
430 property->value(), 429 property->value(),
431 factory()->NewProperty(factory()->NewVariableProxy(temp), 430 factory()->NewProperty(factory()->NewVariableProxy(temp),
432 property->key(), RelocInfo::kNoPosition)); 431 property->key(), kNoSourcePosition));
433 set_context(context); 432 set_context(context);
434 } 433 }
435 } 434 }
436 435
437 436
438 void Parser::PatternRewriter::VisitObjectLiteral(ObjectLiteral* node) { 437 void Parser::PatternRewriter::VisitObjectLiteral(ObjectLiteral* node) {
439 Variable* temp_var = nullptr; 438 Variable* temp_var = nullptr;
440 VisitObjectLiteral(node, &temp_var); 439 VisitObjectLiteral(node, &temp_var);
441 } 440 }
442 441
443 442
444 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node, 443 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
445 Variable** temp_var) { 444 Variable** temp_var) {
446 DCHECK(block_->ignore_completion_value()); 445 DCHECK(block_->ignore_completion_value());
447 446
448 auto temp = *temp_var = CreateTempVar(current_value_); 447 auto temp = *temp_var = CreateTempVar(current_value_);
449 auto iterator = CreateTempVar(parser_->GetIterator( 448 auto iterator = CreateTempVar(parser_->GetIterator(
450 factory()->NewVariableProxy(temp), factory(), RelocInfo::kNoPosition)); 449 factory()->NewVariableProxy(temp), factory(), kNoSourcePosition));
451 auto done = CreateTempVar( 450 auto done =
452 factory()->NewBooleanLiteral(false, RelocInfo::kNoPosition)); 451 CreateTempVar(factory()->NewBooleanLiteral(false, kNoSourcePosition));
453 auto result = CreateTempVar(); 452 auto result = CreateTempVar();
454 auto v = CreateTempVar(); 453 auto v = CreateTempVar();
455 auto completion = CreateTempVar(); 454 auto completion = CreateTempVar();
456 auto nopos = RelocInfo::kNoPosition; 455 auto nopos = kNoSourcePosition;
457 456
458 // For the purpose of iterator finalization, we temporarily set block_ to a 457 // For the purpose of iterator finalization, we temporarily set block_ to a
459 // new block. In the main body of this function, we write to block_ (both 458 // new block. In the main body of this function, we write to block_ (both
460 // explicitly and implicitly via recursion). At the end of the function, we 459 // explicitly and implicitly via recursion). At the end of the function, we
461 // wrap this new block in a try-finally statement, restore block_ to its 460 // wrap this new block in a try-finally statement, restore block_ to its
462 // original value, and add the try-finally statement to block_. 461 // original value, and add the try-finally statement to block_.
463 auto target = block_; 462 auto target = block_;
464 block_ = factory()->NewBlock(nullptr, 8, true, nopos); 463 block_ = factory()->NewBlock(nullptr, 8, true, nopos);
465 464
466 Spread* spread = nullptr; 465 Spread* spread = nullptr;
(...skipping 13 matching lines...) Expand all
480 // } else { 479 // } else {
481 // v = result.value; 480 // v = result.value;
482 // done = false; 481 // done = false;
483 // } 482 // }
484 // } 483 // }
485 Statement* if_not_done; 484 Statement* if_not_done;
486 { 485 {
487 auto result_done = factory()->NewProperty( 486 auto result_done = factory()->NewProperty(
488 factory()->NewVariableProxy(result), 487 factory()->NewVariableProxy(result),
489 factory()->NewStringLiteral(ast_value_factory()->done_string(), 488 factory()->NewStringLiteral(ast_value_factory()->done_string(),
490 RelocInfo::kNoPosition), 489 kNoSourcePosition),
491 RelocInfo::kNoPosition); 490 kNoSourcePosition);
492 491
493 auto assign_undefined = factory()->NewAssignment( 492 auto assign_undefined = factory()->NewAssignment(
494 Token::ASSIGN, factory()->NewVariableProxy(v), 493 Token::ASSIGN, factory()->NewVariableProxy(v),
495 factory()->NewUndefinedLiteral(RelocInfo::kNoPosition), 494 factory()->NewUndefinedLiteral(kNoSourcePosition), kNoSourcePosition);
496 RelocInfo::kNoPosition);
497 495
498 auto assign_value = factory()->NewAssignment( 496 auto assign_value = factory()->NewAssignment(
499 Token::ASSIGN, factory()->NewVariableProxy(v), 497 Token::ASSIGN, factory()->NewVariableProxy(v),
500 factory()->NewProperty( 498 factory()->NewProperty(
501 factory()->NewVariableProxy(result), 499 factory()->NewVariableProxy(result),
502 factory()->NewStringLiteral(ast_value_factory()->value_string(), 500 factory()->NewStringLiteral(ast_value_factory()->value_string(),
503 RelocInfo::kNoPosition), 501 kNoSourcePosition),
504 RelocInfo::kNoPosition), 502 kNoSourcePosition),
505 RelocInfo::kNoPosition); 503 kNoSourcePosition);
506 504
507 auto unset_done = factory()->NewAssignment( 505 auto unset_done = factory()->NewAssignment(
508 Token::ASSIGN, factory()->NewVariableProxy(done), 506 Token::ASSIGN, factory()->NewVariableProxy(done),
509 factory()->NewBooleanLiteral(false, RelocInfo::kNoPosition), 507 factory()->NewBooleanLiteral(false, kNoSourcePosition),
510 RelocInfo::kNoPosition); 508 kNoSourcePosition);
511 509
512 auto inner_else = 510 auto inner_else =
513 factory()->NewBlock(nullptr, 2, true, RelocInfo::kNoPosition); 511 factory()->NewBlock(nullptr, 2, true, kNoSourcePosition);
514 inner_else->statements()->Add( 512 inner_else->statements()->Add(
515 factory()->NewExpressionStatement(assign_value, nopos), zone()); 513 factory()->NewExpressionStatement(assign_value, nopos), zone());
516 inner_else->statements()->Add( 514 inner_else->statements()->Add(
517 factory()->NewExpressionStatement(unset_done, nopos), zone()); 515 factory()->NewExpressionStatement(unset_done, nopos), zone());
518 516
519 auto inner_if = factory()->NewIfStatement( 517 auto inner_if = factory()->NewIfStatement(
520 result_done, 518 result_done,
521 factory()->NewExpressionStatement(assign_undefined, nopos), 519 factory()->NewExpressionStatement(assign_undefined, nopos),
522 inner_else, nopos); 520 inner_else, nopos);
523 521
524 auto next_block = 522 auto next_block =
525 factory()->NewBlock(nullptr, 3, true, RelocInfo::kNoPosition); 523 factory()->NewBlock(nullptr, 3, true, kNoSourcePosition);
526 next_block->statements()->Add( 524 next_block->statements()->Add(
527 factory()->NewExpressionStatement( 525 factory()->NewExpressionStatement(
528 factory()->NewAssignment( 526 factory()->NewAssignment(
529 Token::ASSIGN, factory()->NewVariableProxy(done), 527 Token::ASSIGN, factory()->NewVariableProxy(done),
530 factory()->NewBooleanLiteral(true, nopos), nopos), 528 factory()->NewBooleanLiteral(true, nopos), nopos),
531 nopos), 529 nopos),
532 zone()); 530 zone());
533 next_block->statements()->Add( 531 next_block->statements()->Add(
534 factory()->NewExpressionStatement( 532 factory()->NewExpressionStatement(
535 parser_->BuildIteratorNextResult( 533 parser_->BuildIteratorNextResult(
536 factory()->NewVariableProxy(iterator), result, 534 factory()->NewVariableProxy(iterator), result,
537 RelocInfo::kNoPosition), 535 kNoSourcePosition),
538 RelocInfo::kNoPosition), 536 kNoSourcePosition),
539 zone()); 537 zone());
540 next_block->statements()->Add(inner_if, zone()); 538 next_block->statements()->Add(inner_if, zone());
541 539
542 if_not_done = factory()->NewIfStatement( 540 if_not_done = factory()->NewIfStatement(
543 factory()->NewUnaryOperation(Token::NOT, 541 factory()->NewUnaryOperation(
544 factory()->NewVariableProxy(done), 542 Token::NOT, factory()->NewVariableProxy(done), kNoSourcePosition),
545 RelocInfo::kNoPosition), 543 next_block, factory()->NewEmptyStatement(kNoSourcePosition),
546 next_block, factory()->NewEmptyStatement(RelocInfo::kNoPosition), 544 kNoSourcePosition);
547 RelocInfo::kNoPosition);
548 } 545 }
549 block_->statements()->Add(if_not_done, zone()); 546 block_->statements()->Add(if_not_done, zone());
550 547
551 if (!(value->IsLiteral() && value->AsLiteral()->raw_value()->IsTheHole())) { 548 if (!(value->IsLiteral() && value->AsLiteral()->raw_value()->IsTheHole())) {
552 { 549 {
553 // completion = kAbruptCompletion; 550 // completion = kAbruptCompletion;
554 Expression* proxy = factory()->NewVariableProxy(completion); 551 Expression* proxy = factory()->NewVariableProxy(completion);
555 Expression* assignment = factory()->NewAssignment( 552 Expression* assignment = factory()->NewAssignment(
556 Token::ASSIGN, proxy, 553 Token::ASSIGN, proxy,
557 factory()->NewSmiLiteral(kAbruptCompletion, nopos), nopos); 554 factory()->NewSmiLiteral(kAbruptCompletion, nopos), nopos);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 // } 586 // }
590 587
591 // let array = []; 588 // let array = [];
592 Variable* array; 589 Variable* array;
593 { 590 {
594 auto empty_exprs = new (zone()) ZoneList<Expression*>(0, zone()); 591 auto empty_exprs = new (zone()) ZoneList<Expression*>(0, zone());
595 array = CreateTempVar(factory()->NewArrayLiteral( 592 array = CreateTempVar(factory()->NewArrayLiteral(
596 empty_exprs, 593 empty_exprs,
597 // Reuse pattern's literal index - it is unused since there is no 594 // Reuse pattern's literal index - it is unused since there is no
598 // actual literal allocated. 595 // actual literal allocated.
599 node->literal_index(), RelocInfo::kNoPosition)); 596 node->literal_index(), kNoSourcePosition));
600 } 597 }
601 598
602 // done = true; 599 // done = true;
603 Statement* set_done = factory()->NewExpressionStatement( 600 Statement* set_done = factory()->NewExpressionStatement(
604 factory()->NewAssignment( 601 factory()->NewAssignment(
605 Token::ASSIGN, factory()->NewVariableProxy(done), 602 Token::ASSIGN, factory()->NewVariableProxy(done),
606 factory()->NewBooleanLiteral(true, nopos), nopos), 603 factory()->NewBooleanLiteral(true, nopos), nopos),
607 nopos); 604 nopos);
608 605
609 // result = IteratorNext(iterator); 606 // result = IteratorNext(iterator);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 // <pattern> = temp === undefined ? <init> : temp; 692 // <pattern> = temp === undefined ? <init> : temp;
696 DCHECK_EQ(Token::ASSIGN, node->op()); 693 DCHECK_EQ(Token::ASSIGN, node->op());
697 694
698 auto initializer = node->value(); 695 auto initializer = node->value();
699 auto value = initializer; 696 auto value = initializer;
700 auto temp = CreateTempVar(current_value_); 697 auto temp = CreateTempVar(current_value_);
701 698
702 if (IsInitializerContext()) { 699 if (IsInitializerContext()) {
703 Expression* is_undefined = factory()->NewCompareOperation( 700 Expression* is_undefined = factory()->NewCompareOperation(
704 Token::EQ_STRICT, factory()->NewVariableProxy(temp), 701 Token::EQ_STRICT, factory()->NewVariableProxy(temp),
705 factory()->NewUndefinedLiteral(RelocInfo::kNoPosition), 702 factory()->NewUndefinedLiteral(kNoSourcePosition), kNoSourcePosition);
706 RelocInfo::kNoPosition);
707 value = factory()->NewConditional(is_undefined, initializer, 703 value = factory()->NewConditional(is_undefined, initializer,
708 factory()->NewVariableProxy(temp), 704 factory()->NewVariableProxy(temp),
709 RelocInfo::kNoPosition); 705 kNoSourcePosition);
710 } 706 }
711 707
712 // Initializer may have been parsed in the wrong scope. 708 // Initializer may have been parsed in the wrong scope.
713 RewriteParameterScopes(initializer); 709 RewriteParameterScopes(initializer);
714 710
715 PatternContext old_context = SetAssignmentContextIfNeeded(initializer); 711 PatternContext old_context = SetAssignmentContextIfNeeded(initializer);
716 RecurseIntoSubpattern(node->target(), value); 712 RecurseIntoSubpattern(node->target(), value);
717 set_context(old_context); 713 set_context(old_context);
718 } 714 }
719 715
720 716
721 // =============== AssignmentPattern only ================== 717 // =============== AssignmentPattern only ==================
722 718
723 void Parser::PatternRewriter::VisitProperty(v8::internal::Property* node) { 719 void Parser::PatternRewriter::VisitProperty(v8::internal::Property* node) {
724 DCHECK(IsAssignmentContext()); 720 DCHECK(IsAssignmentContext());
725 auto value = current_value_; 721 auto value = current_value_;
726 722
727 Assignment* assignment = 723 Assignment* assignment =
728 factory()->NewAssignment(Token::ASSIGN, node, value, node->position()); 724 factory()->NewAssignment(Token::ASSIGN, node, value, node->position());
729 725
730 block_->statements()->Add( 726 block_->statements()->Add(
731 factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition), 727 factory()->NewExpressionStatement(assignment, kNoSourcePosition), zone());
732 zone());
733 } 728 }
734 729
735 730
736 // =============== UNREACHABLE ============================= 731 // =============== UNREACHABLE =============================
737 732
738 void Parser::PatternRewriter::Visit(AstNode* node) { UNREACHABLE(); } 733 void Parser::PatternRewriter::Visit(AstNode* node) { UNREACHABLE(); }
739 734
740 #define NOT_A_PATTERN(Node) \ 735 #define NOT_A_PATTERN(Node) \
741 void Parser::PatternRewriter::Visit##Node(v8::internal::Node*) { \ 736 void Parser::PatternRewriter::Visit##Node(v8::internal::Node*) { \
742 UNREACHABLE(); \ 737 UNREACHABLE(); \
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 NOT_A_PATTERN(TryFinallyStatement) 777 NOT_A_PATTERN(TryFinallyStatement)
783 NOT_A_PATTERN(UnaryOperation) 778 NOT_A_PATTERN(UnaryOperation)
784 NOT_A_PATTERN(VariableDeclaration) 779 NOT_A_PATTERN(VariableDeclaration)
785 NOT_A_PATTERN(WhileStatement) 780 NOT_A_PATTERN(WhileStatement)
786 NOT_A_PATTERN(WithStatement) 781 NOT_A_PATTERN(WithStatement)
787 NOT_A_PATTERN(Yield) 782 NOT_A_PATTERN(Yield)
788 783
789 #undef NOT_A_PATTERN 784 #undef NOT_A_PATTERN
790 } // namespace internal 785 } // namespace internal
791 } // namespace v8 786 } // namespace v8
OLDNEW
« no previous file with comments | « src/parsing/parser-base.h ('k') | src/parsing/preparser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698