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

Side by Side Diff: pkg/compiler/lib/src/universe/codegen_world_builder.dart

Issue 2944843002: All strong mode cleaning of dart2js. (Closed)
Patch Set: More issues discovered during testing. 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 part of world_builder; 5 part of world_builder;
6 6
7 /// World builder specific to codegen. 7 /// World builder specific to codegen.
8 /// 8 ///
9 /// This adds additional access to liveness of selectors and elements. 9 /// This adds additional access to liveness of selectors and elements.
10 abstract class CodegenWorldBuilder implements WorldBuilder { 10 abstract class CodegenWorldBuilder implements WorldBuilder {
11 /// Calls [f] with every instance field, together with its declarer, in an 11 /// Calls [f] with every instance field, together with its declarer, in an
12 /// instance of [cls]. 12 /// instance of [cls].
13 void forEachInstanceField( 13 void forEachInstanceField(covariant ClassEntity cls,
14 ClassEntity cls, void f(ClassEntity declarer, FieldEntity field)); 14 void f(ClassEntity declarer, FieldEntity field));
15 15
16 /// Calls [f] for each parameter of [function] providing the type and name of 16 /// Calls [f] for each parameter of [function] providing the type and name of
17 /// the parameter and the [defaultValue] if the parameter is optional. 17 /// the parameter and the [defaultValue] if the parameter is optional.
18 void forEachParameter(FunctionEntity function, 18 void forEachParameter(covariant FunctionEntity function,
19 void f(DartType type, String name, ConstantValue defaultValue)); 19 void f(DartType type, String name, ConstantValue defaultValue));
20 20
21 void forEachInvokedName( 21 void forEachInvokedName(
22 f(String name, Map<Selector, SelectorConstraints> selectors)); 22 f(String name, Map<Selector, SelectorConstraints> selectors));
23 23
24 void forEachInvokedGetter( 24 void forEachInvokedGetter(
25 f(String name, Map<Selector, SelectorConstraints> selectors)); 25 f(String name, Map<Selector, SelectorConstraints> selectors));
26 26
27 void forEachInvokedSetter( 27 void forEachInvokedSetter(
28 f(String name, Map<Selector, SelectorConstraints> selectors)); 28 f(String name, Map<Selector, SelectorConstraints> selectors));
29 29
30 /// Returns `true` if [field] constant or final with a constant initializer. 30 /// Returns `true` if [field] constant or final with a constant initializer.
31 bool hasConstantFieldInitializer(FieldEntity field); 31 bool hasConstantFieldInitializer(covariant FieldEntity field);
32 32
33 /// Returns `true` if [member] is invoked as a setter. 33 /// Returns `true` if [member] is invoked as a setter.
34 bool hasInvokedSetter(MemberEntity member, ClosedWorld world); 34 bool hasInvokedSetter(MemberEntity member, ClosedWorld world);
35 35
36 bool hasInvokedGetter(MemberEntity member, ClosedWorld world); 36 bool hasInvokedGetter(MemberEntity member, ClosedWorld world);
37 37
38 Map<Selector, SelectorConstraints> invocationsByName(String name); 38 Map<Selector, SelectorConstraints> invocationsByName(String name);
39 39
40 Map<Selector, SelectorConstraints> getterInvocationsByName(String name); 40 Map<Selector, SelectorConstraints> getterInvocationsByName(String name);
41 41
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 void forEachInvokedGetter( 316 void forEachInvokedGetter(
317 f(String name, Map<Selector, SelectorConstraints> selectors)) { 317 f(String name, Map<Selector, SelectorConstraints> selectors)) {
318 _invokedGetters.forEach(f); 318 _invokedGetters.forEach(f);
319 } 319 }
320 320
321 void forEachInvokedSetter( 321 void forEachInvokedSetter(
322 f(String name, Map<Selector, SelectorConstraints> selectors)) { 322 f(String name, Map<Selector, SelectorConstraints> selectors)) {
323 _invokedSetters.forEach(f); 323 _invokedSetters.forEach(f);
324 } 324 }
325 325
326 void registerIsCheck(DartType type) { 326 void registerIsCheck(covariant DartType type) {
327 isChecks.add(type.unaliased); 327 isChecks.add(type.unaliased);
328 } 328 }
329 329
330 void _registerStaticUse(StaticUse staticUse) { 330 void _registerStaticUse(StaticUse staticUse) {
331 if (staticUse.element is FieldEntity) { 331 if (staticUse.element is FieldEntity) {
332 FieldEntity field = staticUse.element; 332 FieldEntity field = staticUse.element;
333 if (field.isTopLevel || field.isStatic) { 333 if (field.isTopLevel || field.isStatic) {
334 allReferencedStaticFields.add(field); 334 allReferencedStaticFields.add(field);
335 } 335 }
336 } 336 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 closurizedMembers.add(element); 413 closurizedMembers.add(element);
414 } 414 }
415 415
416 void processClassMembers(ClassEntity cls, MemberUsedCallback memberUsed) { 416 void processClassMembers(ClassEntity cls, MemberUsedCallback memberUsed) {
417 _elementEnvironment.forEachClassMember(cls, 417 _elementEnvironment.forEachClassMember(cls,
418 (ClassEntity cls, MemberEntity member) { 418 (ClassEntity cls, MemberEntity member) {
419 _processInstantiatedClassMember(cls, member, memberUsed); 419 _processInstantiatedClassMember(cls, member, memberUsed);
420 }); 420 });
421 } 421 }
422 422
423 void _processInstantiatedClassMember( 423 void _processInstantiatedClassMember(ClassEntity cls,
424 ClassEntity cls, MemberEntity member, MemberUsedCallback memberUsed) { 424 covariant MemberEntity member, MemberUsedCallback memberUsed) {
425 if (!member.isInstanceMember) return; 425 if (!member.isInstanceMember) return;
426 _getMemberUsage(member, memberUsed); 426 _getMemberUsage(member, memberUsed);
427 } 427 }
428 428
429 _MemberUsage _getMemberUsage( 429 _MemberUsage _getMemberUsage(
430 MemberEntity member, MemberUsedCallback memberUsed) { 430 covariant MemberEntity member, MemberUsedCallback memberUsed) {
431 return _instanceMemberUsage.putIfAbsent(member, () { 431 return _instanceMemberUsage.putIfAbsent(member, () {
432 String memberName = member.name; 432 String memberName = member.name;
433 ClassEntity cls = member.enclosingClass; 433 ClassEntity cls = member.enclosingClass;
434 bool isNative = _nativeBasicData.isNativeClass(cls); 434 bool isNative = _nativeBasicData.isNativeClass(cls);
435 _MemberUsage usage = new _MemberUsage(member, isNative: isNative); 435 _MemberUsage usage = new _MemberUsage(member, isNative: isNative);
436 EnumSet<MemberUse> useSet = new EnumSet<MemberUse>(); 436 EnumSet<MemberUse> useSet = new EnumSet<MemberUse>();
437 useSet.addAll(usage.appliedUse); 437 useSet.addAll(usage.appliedUse);
438 if (hasInvokedGetter(member, _world)) { 438 if (hasInvokedGetter(member, _world)) {
439 useSet.addAll(usage.read()); 439 useSet.addAll(usage.read());
440 } 440 }
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 641
642 @override 642 @override
643 void forEachInstanceField( 643 void forEachInstanceField(
644 ClassEntity cls, void f(ClassEntity declarer, FieldEntity field)) { 644 ClassEntity cls, void f(ClassEntity declarer, FieldEntity field)) {
645 _elementEnvironment.forEachClassMember(cls, 645 _elementEnvironment.forEachClassMember(cls,
646 (ClassEntity declarer, MemberEntity member) { 646 (ClassEntity declarer, MemberEntity member) {
647 if (member.isField && member.isInstanceMember) f(declarer, member); 647 if (member.isField && member.isInstanceMember) f(declarer, member);
648 }); 648 });
649 } 649 }
650 } 650 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/universe/class_set.dart ('k') | pkg/compiler/lib/src/universe/element_world_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698