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

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart

Issue 2917183003: update the analyzer and analysis server perf tags (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:analyzer/context/declared_variables.dart'; 5 import 'package:analyzer/context/declared_variables.dart';
6 import 'package:analyzer/dart/ast/ast.dart'; 6 import 'package:analyzer/dart/ast/ast.dart';
7 import 'package:analyzer/dart/ast/visitor.dart'; 7 import 'package:analyzer/dart/ast/visitor.dart';
8 import 'package:analyzer/dart/element/element.dart'; 8 import 'package:analyzer/dart/element/element.dart';
9 import 'package:analyzer/error/error.dart'; 9 import 'package:analyzer/error/error.dart';
10 import 'package:analyzer/error/listener.dart'; 10 import 'package:analyzer/error/listener.dart';
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 final Map<FileState, List<PendingError>> _fileToPendingErrors = {}; 53 final Map<FileState, List<PendingError>> _fileToPendingErrors = {};
54 final List<ConstantEvaluationTarget> _constants = []; 54 final List<ConstantEvaluationTarget> _constants = [];
55 55
56 LibraryAnalyzer(this._analysisOptions, this._declaredVariables, 56 LibraryAnalyzer(this._analysisOptions, this._declaredVariables,
57 this._sourceFactory, this._fsState, this._store, this._library); 57 this._sourceFactory, this._fsState, this._store, this._library);
58 58
59 /** 59 /**
60 * Compute analysis results for all units of the library. 60 * Compute analysis results for all units of the library.
61 */ 61 */
62 Map<FileState, UnitAnalysisResult> analyze() { 62 Map<FileState, UnitAnalysisResult> analyze() {
63 return PerformanceStatistics.analysis.makeCurrentWhile(() {
64 return _analyze();
65 });
66 }
67
68 Map<FileState, UnitAnalysisResult> _analyze() {
63 Map<FileState, CompilationUnit> units = {}; 69 Map<FileState, CompilationUnit> units = {};
64 70
65 // Parse all files. 71 // Parse all files.
66 units[_library] = _parse(_library); 72 PerformanceStatistics.parse.makeCurrentWhile(() {
67 for (FileState part in _library.partedFiles) { 73 units[_library] = _parse(_library);
scheglov 2017/06/04 00:30:44 Most of the work of _parse() is in FileState.parse
devoncarew 2017/06/04 01:45:52 I moved the instrumentation there.
68 units[part] = _parse(part); 74 for (FileState part in _library.partedFiles) {
69 } 75 units[part] = _parse(part);
76 }
77 });
70 78
71 // Resolve URIs in directives to corresponding sources. 79 // Resolve URIs in directives to corresponding sources.
72 units.forEach((file, unit) { 80 units.forEach((file, unit) {
73 _resolveUriBasedDirectives(file, unit); 81 _resolveUriBasedDirectives(file, unit);
74 }); 82 });
75 83
76 _createAnalysisContext(); 84 _createAnalysisContext();
77 85
78 try { 86 try {
79 _resynthesizer = new StoreBasedSummaryResynthesizer( 87 _resynthesizer = new StoreBasedSummaryResynthesizer(
80 _context, _sourceFactory, _analysisOptions.strongMode, _store); 88 _context, _sourceFactory, _analysisOptions.strongMode, _store);
81 _typeProvider = _resynthesizer.typeProvider; 89 _typeProvider = _resynthesizer.typeProvider;
82 _context.typeProvider = _typeProvider; 90 _context.typeProvider = _typeProvider;
83 91
84 _libraryElement = _resynthesizer.getLibraryElement(_library.uriStr); 92 _libraryElement = _resynthesizer.getLibraryElement(_library.uriStr);
85 93
86 _resolveDirectives(units); 94 _resolveDirectives(units);
87 95
88 units.forEach((file, unit) { 96 units.forEach((file, unit) {
89 _resolveFile(file, unit); 97 _resolveFile(file, unit);
90 _computePendingMissingRequiredParameters(file, unit); 98 _computePendingMissingRequiredParameters(file, unit);
91 }); 99 });
92 100
93 _computeConstants(); 101 _computeConstants();
94 102
95 units.forEach((file, unit) { 103 PerformanceStatistics.errors.makeCurrentWhile(() {
96 _computeVerifyErrors(file, unit); 104 units.forEach((file, unit) {
105 _computeVerifyErrors(file, unit);
106 });
97 }); 107 });
98 108
99 if (_analysisOptions.hint) { 109 if (_analysisOptions.hint) {
100 units.forEach((file, unit) { 110 PerformanceStatistics.hints.makeCurrentWhile(() {
101 { 111 units.forEach((file, unit) {
102 var visitor = new GatherUsedLocalElementsVisitor(_libraryElement); 112 {
103 unit.accept(visitor); 113 var visitor = new GatherUsedLocalElementsVisitor(_libraryElement);
104 _usedLocalElementsList.add(visitor.usedElements); 114 unit.accept(visitor);
105 } 115 _usedLocalElementsList.add(visitor.usedElements);
106 { 116 }
107 var visitor = 117 {
108 new GatherUsedImportedElementsVisitor(_libraryElement); 118 var visitor =
109 unit.accept(visitor); 119 new GatherUsedImportedElementsVisitor(_libraryElement);
110 _usedImportedElementsList.add(visitor.usedElements); 120 unit.accept(visitor);
111 } 121 _usedImportedElementsList.add(visitor.usedElements);
112 }); 122 }
113 units.forEach((file, unit) { 123 });
114 _computeHints(file, unit); 124 units.forEach((file, unit) {
125 _computeHints(file, unit);
126 });
115 }); 127 });
116 } 128 }
117 129
118 if (_analysisOptions.lint) { 130 if (_analysisOptions.lint) {
119 units.forEach((file, unit) { 131 PerformanceStatistics.lints.makeCurrentWhile(() {
120 _computeLints(file, unit); 132 units.forEach((file, unit) {
133 _computeLints(file, unit);
134 });
121 }); 135 });
122 } 136 }
123 } finally { 137 } finally {
124 _context.dispose(); 138 _context.dispose();
125 } 139 }
126 140
127 // Return full results. 141 // Return full results.
128 Map<FileState, UnitAnalysisResult> results = {}; 142 Map<FileState, UnitAnalysisResult> results = {};
129 units.forEach((file, unit) { 143 units.forEach((file, unit) {
130 List<AnalysisError> errors = _getErrorListener(file).errors; 144 List<AnalysisError> errors = _getErrorListener(file).errors;
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 } 798 }
785 799
786 /** 800 /**
787 * Either the name or the source associated with a part-of directive. 801 * Either the name or the source associated with a part-of directive.
788 */ 802 */
789 class _NameOrSource { 803 class _NameOrSource {
790 final String name; 804 final String name;
791 final Source source; 805 final Source source;
792 _NameOrSource(this.name, this.source); 806 _NameOrSource(this.name, this.source);
793 } 807 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698