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

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

Issue 1132363003: dart2js: keep track of non-final static fields. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 universe; 5 library universe;
6 6
7 import '../elements/elements.dart'; 7 import '../elements/elements.dart';
8 import '../dart2jslib.dart'; 8 import '../dart2jslib.dart';
9 import '../dart_types.dart'; 9 import '../dart_types.dart';
10 import '../types/types.dart'; 10 import '../types/types.dart';
(...skipping 19 matching lines...) Expand all
30 /// 30 ///
31 /// See [_directlyInstantiatedClasses]. 31 /// See [_directlyInstantiatedClasses].
32 final Set<DartType> _instantiatedTypes = new Set<DartType>(); 32 final Set<DartType> _instantiatedTypes = new Set<DartType>();
33 33
34 /// The set of all instantiated classes, either directly, as superclasses or 34 /// The set of all instantiated classes, either directly, as superclasses or
35 /// as supertypes. 35 /// as supertypes.
36 /// 36 ///
37 /// Invariant: Elements are declaration elements. 37 /// Invariant: Elements are declaration elements.
38 final Set<ClassElement> _allInstantiatedClasses = new Set<ClassElement>(); 38 final Set<ClassElement> _allInstantiatedClasses = new Set<ClassElement>();
39 39
40 /// The set of all referenced static fields.
41 ///
42 /// Invariant: Elements are declaration elements.
43 final Set<FieldElement> allReferencedStaticFields = new Set<FieldElement>();
44
40 /** 45 /**
41 * Documentation wanted -- johnniwinther 46 * Documentation wanted -- johnniwinther
42 * 47 *
43 * Invariant: Elements are declaration elements. 48 * Invariant: Elements are declaration elements.
44 */ 49 */
45 final Set<FunctionElement> staticFunctionsNeedingGetter = 50 final Set<FunctionElement> staticFunctionsNeedingGetter =
46 new Set<FunctionElement>(); 51 new Set<FunctionElement>();
47 final Set<FunctionElement> methodsNeedingSuperGetter = 52 final Set<FunctionElement> methodsNeedingSuperGetter =
48 new Set<FunctionElement>(); 53 new Set<FunctionElement>();
49 final Map<String, Set<Selector>> invokedNames = 54 final Map<String, Set<Selector>> invokedNames =
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 183
179 DartType registerIsCheck(DartType type, Compiler compiler) { 184 DartType registerIsCheck(DartType type, Compiler compiler) {
180 type = type.unalias(compiler); 185 type = type.unalias(compiler);
181 // Even in checked mode, type annotations for return type and argument 186 // Even in checked mode, type annotations for return type and argument
182 // types do not imply type checks, so there should never be a check 187 // types do not imply type checks, so there should never be a check
183 // against the type variable of a typedef. 188 // against the type variable of a typedef.
184 isChecks.add(type); 189 isChecks.add(type);
185 return type; 190 return type;
186 } 191 }
187 192
193 void registerStaticFieldUse(FieldElement staticField) {
194 assert(Elements.isStaticOrTopLevel(staticField) && staticField.isField);
195 assert(staticField.isDeclaration);
196
197 allReferencedStaticFields.add(staticField);
198 }
199
188 void forgetElement(Element element, Compiler compiler) { 200 void forgetElement(Element element, Compiler compiler) {
189 allClosures.remove(element); 201 allClosures.remove(element);
190 slowDirectlyNestedClosures(element).forEach(compiler.forgetElement); 202 slowDirectlyNestedClosures(element).forEach(compiler.forgetElement);
191 closurizedMembers.remove(element); 203 closurizedMembers.remove(element);
192 fieldSetters.remove(element); 204 fieldSetters.remove(element);
193 fieldGetters.remove(element); 205 fieldGetters.remove(element);
194 _directlyInstantiatedClasses.remove(element); 206 _directlyInstantiatedClasses.remove(element);
195 _allInstantiatedClasses.remove(element); 207 _allInstantiatedClasses.remove(element);
196 if (element is ClassElement) { 208 if (element is ClassElement) {
197 assert(invariant( 209 assert(invariant(
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 859
848 Selector extendIfReachesAll(Compiler compiler) { 860 Selector extendIfReachesAll(Compiler compiler) {
849 bool canReachAll = compiler.enabledInvokeOn 861 bool canReachAll = compiler.enabledInvokeOn
850 && mask.needsNoSuchMethodHandling(this, compiler.world); 862 && mask.needsNoSuchMethodHandling(this, compiler.world);
851 return canReachAll 863 return canReachAll
852 ? new TypedSelector( 864 ? new TypedSelector(
853 compiler.typesTask.dynamicType, this, compiler.world) 865 compiler.typesTask.dynamicType, this, compiler.world)
854 : this; 866 : this;
855 } 867 }
856 } 868 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698