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

Side by Side Diff: pkg/analyzer/lib/src/generated/incremental_resolver.dart

Issue 1350423002: Partially fix the cache invalidation problem during incremental resolution. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library engine.incremental_resolver; 5 library engine.incremental_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/context/cache.dart' 10 import 'package:analyzer/src/context/cache.dart'
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 @override 857 @override
858 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target, 858 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target,
859 ResultDescriptor descriptor) { 859 ResultDescriptor descriptor) {
860 // don't invalidate results of standard Dart tasks 860 // don't invalidate results of standard Dart tasks
861 bool isByTask(TaskDescriptor taskDescriptor) { 861 bool isByTask(TaskDescriptor taskDescriptor) {
862 return taskDescriptor.results.contains(descriptor); 862 return taskDescriptor.results.contains(descriptor);
863 } 863 }
864 if (descriptor == CONTENT) { 864 if (descriptor == CONTENT) {
865 return DeltaResult.KEEP_CONTINUE; 865 return DeltaResult.KEEP_CONTINUE;
866 } 866 }
867 if (target is Source && target != source) {
868 if (isByTask(DartErrorsTask.DESCRIPTOR) ||
869 isByTask(LibraryErrorsReadyTask.DESCRIPTOR)) {
870 return DeltaResult.KEEP_CONTINUE;
871 }
872 }
873 if (target is LibrarySpecificUnit &&
874 target.unit != source &&
875 target.library != source) {
876 if (isByTask(GatherUsedLocalElementsTask.DESCRIPTOR) ||
877 isByTask(GatherUsedImportedElementsTask.DESCRIPTOR) ||
878 isByTask(GenerateHintsTask.DESCRIPTOR) ||
879 isByTask(LibraryUnitErrorsTask.DESCRIPTOR)) {
880 return DeltaResult.KEEP_CONTINUE;
881 }
882 }
867 if (isByTask(BuildCompilationUnitElementTask.DESCRIPTOR) || 883 if (isByTask(BuildCompilationUnitElementTask.DESCRIPTOR) ||
868 isByTask(BuildDirectiveElementsTask.DESCRIPTOR) || 884 isByTask(BuildDirectiveElementsTask.DESCRIPTOR) ||
869 isByTask(BuildEnumMemberElementsTask.DESCRIPTOR) || 885 isByTask(BuildEnumMemberElementsTask.DESCRIPTOR) ||
870 isByTask(BuildExportNamespaceTask.DESCRIPTOR) || 886 isByTask(BuildExportNamespaceTask.DESCRIPTOR) ||
871 isByTask(BuildLibraryElementTask.DESCRIPTOR) || 887 isByTask(BuildLibraryElementTask.DESCRIPTOR) ||
872 isByTask(BuildPublicNamespaceTask.DESCRIPTOR) || 888 isByTask(BuildPublicNamespaceTask.DESCRIPTOR) ||
873 isByTask(BuildSourceExportClosureTask.DESCRIPTOR) || 889 isByTask(BuildSourceExportClosureTask.DESCRIPTOR) ||
874 isByTask(BuildSourceImportExportClosureTask.DESCRIPTOR) || 890 isByTask(BuildSourceImportExportClosureTask.DESCRIPTOR) ||
875 isByTask(ComputeConstantDependenciesTask.DESCRIPTOR) || 891 isByTask(ComputeConstantDependenciesTask.DESCRIPTOR) ||
876 isByTask(ComputeConstantValueTask.DESCRIPTOR) || 892 isByTask(ComputeConstantValueTask.DESCRIPTOR) ||
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 } 1260 }
1245 1261
1246 void _shiftErrors_OLD(DataDescriptor<List<AnalysisError>> descriptor) { 1262 void _shiftErrors_OLD(DataDescriptor<List<AnalysisError>> descriptor) {
1247 List<AnalysisError> errors = 1263 List<AnalysisError> errors =
1248 oldEntry.getValueInLibrary(descriptor, _librarySource); 1264 oldEntry.getValueInLibrary(descriptor, _librarySource);
1249 _shiftErrors(errors); 1265 _shiftErrors(errors);
1250 } 1266 }
1251 1267
1252 void _updateCache() { 1268 void _updateCache() {
1253 if (newSourceEntry != null) { 1269 if (newSourceEntry != null) {
1254 newSourceEntry.setState(CONTENT, CacheState.INVALID, 1270 LoggingTimer timer = logger.startTimer();
1255 delta: new IncrementalBodyDelta(_source, _updateOffset, _updateEndOld, 1271 try {
1256 _updateEndNew, _updateDelta)); 1272 newSourceEntry.setState(CONTENT, CacheState.INVALID,
1273 delta: new IncrementalBodyDelta(_source, _updateOffset,
1274 _updateEndOld, _updateEndNew, _updateDelta));
1275 } finally {
1276 timer.stop('invalidate cache with delta');
1277 }
1257 } 1278 }
1258 } 1279 }
1259 1280
1260 void _updateElementNameOffsets() { 1281 void _updateElementNameOffsets() {
1261 LoggingTimer timer = logger.startTimer(); 1282 LoggingTimer timer = logger.startTimer();
1262 try { 1283 try {
1263 _definingUnit 1284 _definingUnit
1264 .accept(new _ElementNameOffsetUpdater(_updateOffset, _updateDelta)); 1285 .accept(new _ElementNameOffsetUpdater(_updateOffset, _updateDelta));
1265 } finally { 1286 } finally {
1266 timer.stop('update element offsets'); 1287 timer.stop('update element offsets');
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
2120 @override 2141 @override
2121 String toString() => name; 2142 String toString() => name;
2122 } 2143 }
2123 2144
2124 class _TokenPair { 2145 class _TokenPair {
2125 final _TokenDifferenceKind kind; 2146 final _TokenDifferenceKind kind;
2126 final Token oldToken; 2147 final Token oldToken;
2127 final Token newToken; 2148 final Token newToken;
2128 _TokenPair(this.kind, this.oldToken, this.newToken); 2149 _TokenPair(this.kind, this.oldToken, this.newToken);
2129 } 2150 }
OLDNEW
« pkg/analyzer/lib/src/context/cache.dart ('K') | « pkg/analyzer/lib/src/context/cache.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698