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

Side by Side Diff: pkg/front_end/lib/src/incremental_kernel_generator_impl.dart

Issue 2885743002: Include only changed or affected libraries into delta. (Closed)
Patch Set: Created 3 years, 7 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 'dart:async'; 5 import 'dart:async';
6 import 'dart:io'; 6 import 'dart:io';
7 7
8 import 'package:front_end/file_system.dart'; 8 import 'package:front_end/file_system.dart';
9 import 'package:front_end/incremental_kernel_generator.dart'; 9 import 'package:front_end/incremental_kernel_generator.dart';
10 import 'package:front_end/incremental_resolved_ast_generator.dart'; 10 import 'package:front_end/incremental_resolved_ast_generator.dart';
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 /// The current file system state. 57 /// The current file system state.
58 final FileSystemState _fsState; 58 final FileSystemState _fsState;
59 59
60 /// The byte storage to get and put serialized data. 60 /// The byte storage to get and put serialized data.
61 final ByteStore _byteStore; 61 final ByteStore _byteStore;
62 62
63 /// The URI of the program entry point. 63 /// The URI of the program entry point.
64 final Uri _entryPoint; 64 final Uri _entryPoint;
65 65
66 /// Latest compilation signatures produced by [computeDelta] for libraries.
67 final Map<Uri, String> _uriToLatestSignature = {};
Siggi Cherem (dart-lang) 2017/05/17 18:15:10 optional style nit: consider dropping "_uriTo" fro
scheglov 2017/05/17 22:04:05 OK Will do in https://codereview.chromium.org/2893
68
66 /// The set of absolute file URIs that were reported through [invalidate] 69 /// The set of absolute file URIs that were reported through [invalidate]
67 /// and not checked for actual changes yet. 70 /// and not checked for actual changes yet.
68 final Set<Uri> _invalidatedFiles = new Set<Uri>(); 71 final Set<Uri> _invalidatedFiles = new Set<Uri>();
69 72
70 IncrementalKernelGeneratorImpl( 73 IncrementalKernelGeneratorImpl(
71 this._options, this._uriTranslator, this._entryPoint) 74 this._options, this._uriTranslator, this._entryPoint)
72 : _logger = _options.logger, 75 : _logger = _options.logger,
73 _fsState = new FileSystemState(_options.fileSystem, _uriTranslator), 76 _fsState = new FileSystemState(_options.fileSystem, _uriTranslator),
74 _byteStore = _options.byteStore; 77 _byteStore = _options.byteStore;
75 78
(...skipping 19 matching lines...) Expand all
95 List<_LibraryCycleResult> results = []; 98 List<_LibraryCycleResult> results = [];
96 await _logger.runAsync('Compute results for cycles', () async { 99 await _logger.runAsync('Compute results for cycles', () async {
97 for (LibraryCycle cycle in cycles) { 100 for (LibraryCycle cycle in cycles) {
98 _LibraryCycleResult result = 101 _LibraryCycleResult result =
99 await _compileCycle(nameRoot, dillTarget, cycle); 102 await _compileCycle(nameRoot, dillTarget, cycle);
100 results.add(result); 103 results.add(result);
101 } 104 }
102 }); 105 });
103 106
104 Program program = new Program(nameRoot: nameRoot); 107 Program program = new Program(nameRoot: nameRoot);
108
109 // Add affected libraries (with different signatures).
105 for (_LibraryCycleResult result in results) { 110 for (_LibraryCycleResult result in results) {
106 program.libraries.addAll(result.kernelLibraries); 111 for (Library library in result.kernelLibraries) {
112 Uri uri = library.importUri;
113 if (_uriToLatestSignature[uri] != result.signature) {
114 _uriToLatestSignature[uri] = result.signature;
115 program.libraries.add(library);
116 }
117 }
107 } 118 }
108 119
120 // TODO(scheglov) Add libraries which import changed libraries.
121
109 return new DeltaProgram(program); 122 return new DeltaProgram(program);
110 }); 123 });
111 } 124 }
112 125
113 @override 126 @override
114 void invalidate(Uri uri) { 127 void invalidate(Uri uri) {
115 _invalidatedFiles.add(uri); 128 _invalidatedFiles.add(uri);
116 } 129 }
117 130
118 @override 131 @override
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 /// TODO(scheglov) Use API signatures. 243 /// TODO(scheglov) Use API signatures.
231 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines. 244 /// TODO(scheglov) Or use tree shaking and compute signatures of outlines.
232 final String signature; 245 final String signature;
233 246
234 /// Kernel libraries for libraries in the [cycle]. Dependencies are not 247 /// Kernel libraries for libraries in the [cycle]. Dependencies are not
235 /// included, they were returned as results for preceding cycles. 248 /// included, they were returned as results for preceding cycles.
236 final List<Library> kernelLibraries; 249 final List<Library> kernelLibraries;
237 250
238 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries); 251 _LibraryCycleResult(this.cycle, this.signature, this.kernelLibraries);
239 } 252 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/incremental_kernel_generator.dart ('k') | pkg/front_end/test/incremental_kernel_generator_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698