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

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 1424923004: Add StaticUse for more precise registration of statically known element use. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 1 month 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 | « pkg/compiler/lib/src/dart_backend/backend.dart ('k') | pkg/compiler/lib/src/enqueue.dart » ('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 (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 deferred_load; 5 library deferred_load;
6 6
7 import 'common.dart'; 7 import 'common.dart';
8 import 'common/backend_api.dart' show 8 import 'common/backend_api.dart' show
9 Backend; 9 Backend;
10 import 'common/tasks.dart' show 10 import 'common/tasks.dart' show
(...skipping 29 matching lines...) Expand all
40 TreeElements; 40 TreeElements;
41 import 'tree/tree.dart' as ast; 41 import 'tree/tree.dart' as ast;
42 import 'tree/tree.dart' show 42 import 'tree/tree.dart' show
43 Import, 43 Import,
44 LibraryTag, 44 LibraryTag,
45 LibraryDependency, 45 LibraryDependency,
46 LiteralDartString, 46 LiteralDartString,
47 LiteralString, 47 LiteralString,
48 NewExpression, 48 NewExpression,
49 Node; 49 Node;
50 import 'universe/use.dart' show
51 StaticUse;
50 import 'universe/world_impact.dart' show 52 import 'universe/world_impact.dart' show
51 WorldImpact; 53 WorldImpact;
52 import 'util/setlet.dart' show 54 import 'util/setlet.dart' show
53 Setlet; 55 Setlet;
54 import 'util/uri_extras.dart' as uri_extras; 56 import 'util/uri_extras.dart' as uri_extras;
55 import 'util/util.dart' show 57 import 'util/util.dart' show
56 Link, makeUnique; 58 Link, makeUnique;
57 59
58 /// A "hunk" of the program that will be loaded whenever one of its [imports] 60 /// A "hunk" of the program that will be loaded whenever one of its [imports]
59 /// are loaded. 61 /// are loaded.
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } else { 307 } else {
306 // TODO(sigurdm): We want to be more specific about this - need a better 308 // TODO(sigurdm): We want to be more specific about this - need a better
307 // way to query "liveness". 309 // way to query "liveness".
308 AstElement analyzableElement = element.analyzableElement.declaration; 310 AstElement analyzableElement = element.analyzableElement.declaration;
309 if (!compiler.enqueuer.resolution.hasBeenProcessed(analyzableElement)) { 311 if (!compiler.enqueuer.resolution.hasBeenProcessed(analyzableElement)) {
310 return; 312 return;
311 } 313 }
312 314
313 WorldImpact worldImpact = 315 WorldImpact worldImpact =
314 compiler.resolution.getWorldImpact(analyzableElement); 316 compiler.resolution.getWorldImpact(analyzableElement);
315 elements.addAll(worldImpact.staticUses); 317 worldImpact.staticUses.forEach((StaticUse staticUse) {
318 elements.add(staticUse.element);
319 });
316 elements.addAll(worldImpact.closures); 320 elements.addAll(worldImpact.closures);
317 for (DartType type in worldImpact.typeLiterals) { 321 for (DartType type in worldImpact.typeLiterals) {
318 if (type.isTypedef || type.isInterfaceType) { 322 if (type.isTypedef || type.isInterfaceType) {
319 elements.add(type.element); 323 elements.add(type.element);
320 } 324 }
321 } 325 }
322 worldImpact.instantiatedTypes.forEach(collectTypeDependencies); 326 worldImpact.instantiatedTypes.forEach(collectTypeDependencies);
323 worldImpact.isChecks.forEach(collectTypeDependencies); 327 worldImpact.isChecks.forEach(collectTypeDependencies);
324 worldImpact.asCasts.forEach(collectTypeDependencies); 328 worldImpact.asCasts.forEach(collectTypeDependencies);
325 worldImpact.onCatchTypes.forEach(collectTypeDependencies); 329 worldImpact.onCatchTypes.forEach(collectTypeDependencies);
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 return result; 986 return result;
983 } 987 }
984 988
985 bool operator ==(other) { 989 bool operator ==(other) {
986 if (other is! _DeclaredDeferredImport) return false; 990 if (other is! _DeclaredDeferredImport) return false;
987 return declaration == other.declaration; 991 return declaration == other.declaration;
988 } 992 }
989 993
990 int get hashCode => declaration.hashCode * 17; 994 int get hashCode => declaration.hashCode * 17;
991 } 995 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/dart_backend/backend.dart ('k') | pkg/compiler/lib/src/enqueue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698