Chromium Code Reviews| Index: pkg/compiler/lib/src/world.dart |
| diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart |
| index 322dec362bfa3e57195db4a7ac755e67178f3413..3c4c100a1ba6dd103ab566b7fb0a0deabf9c60b7 100644 |
| --- a/pkg/compiler/lib/src/world.dart |
| +++ b/pkg/compiler/lib/src/world.dart |
| @@ -28,7 +28,6 @@ import 'universe/class_set.dart'; |
| import 'universe/function_set.dart' show FunctionSet; |
| import 'universe/selector.dart' show Selector; |
| import 'universe/side_effects.dart' show SideEffects; |
| -import 'universe/world_builder.dart' show ResolutionWorldBuilder; |
| import 'util/util.dart' show Link; |
| /// Common superinterface for [OpenWorld] and [ClosedWorld]. |
| @@ -444,14 +443,14 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { |
| final DartTypes dartTypes; |
| final CommonElements commonElements; |
| - // TODO(johnniwinther): Avoid this. |
| - final ResolutionWorldBuilder _resolverWorld; |
|
Siggi Cherem (dart-lang)
2017/07/05 21:00:09
\o/
|
|
| - |
| // TODO(johnniwinther): Can this be derived from [ClassSet]s? |
| final Set<ClassEntity> _implementedClasses; |
| final Iterable<MemberEntity> liveInstanceMembers; |
| + /// Members that are written either directly or through a setter selector. |
| + final Iterable<MemberEntity> assignedInstanceMembers; |
| + |
| ClosedWorldBase( |
| this.elementEnvironment, |
| this.dartTypes, |
| @@ -460,16 +459,15 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { |
| this.nativeData, |
| this.interceptorData, |
| this.backendUsage, |
| - ResolutionWorldBuilder resolutionWorldBuilder, |
| Set<ClassEntity> implementedClasses, |
| this.liveInstanceMembers, |
| + this.assignedInstanceMembers, |
| Set<TypedefElement> allTypedefs, |
| this.mixinUses, |
| Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, |
| Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, |
| Map<ClassEntity, ClassSet> classSets) |
| - : this._resolverWorld = resolutionWorldBuilder, |
| - this._implementedClasses = implementedClasses, |
| + : this._implementedClasses = implementedClasses, |
| this._allTypedefs = allTypedefs, |
| this._typesImplementedBySubclasses = typesImplementedBySubclasses, |
| this._classHierarchyNodes = classHierarchyNodes, |
| @@ -1066,8 +1064,7 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { |
| return true; |
| } |
| if (element.isInstanceMember) { |
| - return !_resolverWorld.hasInvokedSetter(element) && |
| - !_resolverWorld.fieldSetters.contains(element); |
| + return !assignedInstanceMembers.contains(element); |
| } |
| return false; |
| } |
| @@ -1180,9 +1177,9 @@ class ClosedWorldImpl extends ClosedWorldBase { |
| NativeData nativeData, |
| InterceptorData interceptorData, |
| BackendUsage backendUsage, |
| - ResolutionWorldBuilder resolutionWorldBuilder, |
| Set<ClassEntity> implementedClasses, |
| Iterable<MemberEntity> liveInstanceMembers, |
| + Iterable<MemberEntity> assignedInstanceMembers, |
| Set<TypedefElement> allTypedefs, |
| Map<ClassEntity, Set<ClassEntity>> mixinUses, |
| Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, |
| @@ -1196,9 +1193,9 @@ class ClosedWorldImpl extends ClosedWorldBase { |
| nativeData, |
| interceptorData, |
| backendUsage, |
| - resolutionWorldBuilder, |
| implementedClasses, |
| liveInstanceMembers, |
| + assignedInstanceMembers, |
| allTypedefs, |
| mixinUses, |
| typesImplementedBySubclasses, |