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

Side by Side Diff: pkg/analyzer/lib/src/context/context.dart

Issue 2276733003: Issue 27133. Reset AnalysisDriver when performing limited invalidation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 analyzer.src.context.context; 5 library analyzer.src.context.context;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 1838 matching lines...) Expand 10 before | Expand all | Expand 10 after
1849 for (CacheEntry entry in _entriesFor(source)) { 1849 for (CacheEntry entry in _entriesFor(source)) {
1850 entry.modificationTime = time; 1850 entry.modificationTime = time;
1851 } 1851 }
1852 } 1852 }
1853 1853
1854 // Fast path if the contents is the same as it was last time. 1854 // Fast path if the contents is the same as it was last time.
1855 if (oldContents != null && fileContents?.data == oldContents) { 1855 if (oldContents != null && fileContents?.data == oldContents) {
1856 return; 1856 return;
1857 } 1857 }
1858 1858
1859 // We're going to update the cache, so reset the driver.
1860 driver.reset();
1861
1859 // We need to invalidate the cache. 1862 // We need to invalidate the cache.
1860 { 1863 {
1861 if (analysisOptions.finerGrainedInvalidation && 1864 if (analysisOptions.finerGrainedInvalidation &&
1862 AnalysisEngine.isDartFileName(source.fullName)) { 1865 AnalysisEngine.isDartFileName(source.fullName)) {
1863 // TODO(scheglov) Incorrect implementation in general. 1866 // TODO(scheglov) Incorrect implementation in general.
1864 entry.setState(TOKEN_STREAM, CacheState.FLUSHED); 1867 entry.setState(TOKEN_STREAM, CacheState.FLUSHED);
1865 entry.setState(PARSED_UNIT, CacheState.FLUSHED); 1868 entry.setState(PARSED_UNIT, CacheState.FLUSHED);
1866 SourceKind sourceKind = getKindOf(source); 1869 SourceKind sourceKind = getKindOf(source);
1867 List<Source> partSources = getResult(source, INCLUDED_PARTS); 1870 List<Source> partSources = getResult(source, INCLUDED_PARTS);
1868 if (sourceKind == SourceKind.LIBRARY && partSources.isEmpty) { 1871 if (sourceKind == SourceKind.LIBRARY && partSources.isEmpty) {
(...skipping 22 matching lines...) Expand all
1891 entry.setState(CONTENT, CacheState.INVALID, delta: dartDelta); 1894 entry.setState(CONTENT, CacheState.INVALID, delta: dartDelta);
1892 return; 1895 return;
1893 } 1896 }
1894 } 1897 }
1895 } 1898 }
1896 } 1899 }
1897 entry.setState(CONTENT, CacheState.INVALID); 1900 entry.setState(CONTENT, CacheState.INVALID);
1898 entry.setState(MODIFICATION_TIME, CacheState.INVALID); 1901 entry.setState(MODIFICATION_TIME, CacheState.INVALID);
1899 entry.setState(SOURCE_KIND, CacheState.INVALID); 1902 entry.setState(SOURCE_KIND, CacheState.INVALID);
1900 } 1903 }
1901 driver.reset();
1902 for (WorkManager workManager in workManagers) { 1904 for (WorkManager workManager in workManagers) {
1903 workManager.applyChange( 1905 workManager.applyChange(
1904 Source.EMPTY_LIST, <Source>[source], Source.EMPTY_LIST); 1906 Source.EMPTY_LIST, <Source>[source], Source.EMPTY_LIST);
1905 } 1907 }
1906 } 1908 }
1907 1909
1908 /** 1910 /**
1909 * Record that the give [source] has been deleted. 1911 * Record that the give [source] has been deleted.
1910 */ 1912 */
1911 void _sourceDeleted(Source source) { 1913 void _sourceDeleted(Source source) {
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
2296 } 2298 }
2297 DartSdk sdk = factory.dartSdk; 2299 DartSdk sdk = factory.dartSdk;
2298 if (sdk == null) { 2300 if (sdk == null) {
2299 throw new IllegalArgumentException( 2301 throw new IllegalArgumentException(
2300 "The source factory for an SDK analysis context must have a DartUriRes olver"); 2302 "The source factory for an SDK analysis context must have a DartUriRes olver");
2301 } 2303 }
2302 return new AnalysisCache( 2304 return new AnalysisCache(
2303 <CachePartition>[AnalysisEngine.instance.partitionManager.forSdk(sdk)]); 2305 <CachePartition>[AnalysisEngine.instance.partitionManager.forSdk(sdk)]);
2304 } 2306 }
2305 } 2307 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698