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

Side by Side Diff: src/parsing/parser.cc

Issue 2650703003: [parser]: Skipping inner funcs / initial implemetation of storing scope analysis data from preparse… (Closed)
Patch Set: rebased - argh, forced to format build.gn Created 3 years, 11 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.h ('k') | src/parsing/preparsed-scope-data.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/parsing/parser.h" 5 #include "src/parsing/parser.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/ast/ast-expression-rewriter.h" 10 #include "src/ast/ast-expression-rewriter.h"
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 true), 512 true),
513 scanner_(info->unicode_cache()), 513 scanner_(info->unicode_cache()),
514 reusable_preparser_(nullptr), 514 reusable_preparser_(nullptr),
515 original_scope_(nullptr), 515 original_scope_(nullptr),
516 mode_(PARSE_EAGERLY), // Lazy mode must be set explicitly. 516 mode_(PARSE_EAGERLY), // Lazy mode must be set explicitly.
517 target_stack_(nullptr), 517 target_stack_(nullptr),
518 compile_options_(info->compile_options()), 518 compile_options_(info->compile_options()),
519 cached_parse_data_(nullptr), 519 cached_parse_data_(nullptr),
520 total_preparse_skipped_(0), 520 total_preparse_skipped_(0),
521 temp_zoned_(false), 521 temp_zoned_(false),
522 log_(nullptr) { 522 log_(nullptr),
523 preparsed_scope_data_(info->preparsed_scope_data()) {
523 // Even though we were passed ParseInfo, we should not store it in 524 // Even though we were passed ParseInfo, we should not store it in
524 // Parser - this makes sure that Isolate is not accidentally accessed via 525 // Parser - this makes sure that Isolate is not accidentally accessed via
525 // ParseInfo during background parsing. 526 // ParseInfo during background parsing.
526 DCHECK(!info->script().is_null() || info->source_stream() != nullptr || 527 DCHECK(!info->script().is_null() || info->source_stream() != nullptr ||
527 info->character_stream() != nullptr); 528 info->character_stream() != nullptr);
528 // Determine if functions can be lazily compiled. This is necessary to 529 // Determine if functions can be lazily compiled. This is necessary to
529 // allow some of our builtin JS files to be lazily compiled. These 530 // allow some of our builtin JS files to be lazily compiled. These
530 // builtins cannot be handled lazily by the parser, since we have to know 531 // builtins cannot be handled lazily by the parser, since we have to know
531 // if a function uses the special natives syntax, which is something the 532 // if a function uses the special natives syntax, which is something the
532 // parser records. 533 // parser records.
(...skipping 2145 matching lines...) Expand 10 before | Expand all | Expand 10 after
2678 function_name, pos, kind, function_type, scope, &num_parameters, 2679 function_name, pos, kind, function_type, scope, &num_parameters,
2679 &function_length, &has_duplicate_parameters, 2680 &function_length, &has_duplicate_parameters,
2680 &materialized_literal_count, &expected_property_count, CHECK_OK); 2681 &materialized_literal_count, &expected_property_count, CHECK_OK);
2681 } 2682 }
2682 2683
2683 DCHECK(use_temp_zone || !is_lazy_top_level_function); 2684 DCHECK(use_temp_zone || !is_lazy_top_level_function);
2684 if (use_temp_zone) { 2685 if (use_temp_zone) {
2685 // If the preconditions are correct the function body should never be 2686 // If the preconditions are correct the function body should never be
2686 // accessed, but do this anyway for better behaviour if they're wrong. 2687 // accessed, but do this anyway for better behaviour if they're wrong.
2687 body = nullptr; 2688 body = nullptr;
2688 scope->AnalyzePartially(&previous_zone_ast_node_factory); 2689 scope->AnalyzePartially(&previous_zone_ast_node_factory,
2690 preparsed_scope_data_);
2689 } 2691 }
2690 2692
2691 DCHECK_IMPLIES(use_temp_zone, temp_zoned_); 2693 DCHECK_IMPLIES(use_temp_zone, temp_zoned_);
2692 if (FLAG_trace_preparse) { 2694 if (FLAG_trace_preparse) {
2693 PrintF(" [%s]: %i-%i %.*s\n", 2695 PrintF(" [%s]: %i-%i %.*s\n",
2694 is_lazy_top_level_function 2696 is_lazy_top_level_function
2695 ? "Preparse no-resolution" 2697 ? "Preparse no-resolution"
2696 : (temp_zoned_ ? "Preparse resolution" : "Full parse"), 2698 : (temp_zoned_ ? "Preparse resolution" : "Full parse"),
2697 scope->start_position(), scope->end_position(), 2699 scope->start_position(), scope->end_position(),
2698 function_name->byte_length(), function_name->raw_data()); 2700 function_name->byte_length(), function_name->raw_data());
(...skipping 2336 matching lines...) Expand 10 before | Expand all | Expand 10 after
5035 5037
5036 return final_loop; 5038 return final_loop;
5037 } 5039 }
5038 5040
5039 #undef CHECK_OK 5041 #undef CHECK_OK
5040 #undef CHECK_OK_VOID 5042 #undef CHECK_OK_VOID
5041 #undef CHECK_FAILED 5043 #undef CHECK_FAILED
5042 5044
5043 } // namespace internal 5045 } // namespace internal
5044 } // namespace v8 5046 } // namespace v8
OLDNEW
« no previous file with comments | « src/parsing/parser.h ('k') | src/parsing/preparsed-scope-data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698