| OLD | NEW | 
|---|
| 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 'dart:collection'; | 7 import 'dart:collection'; | 
| 8 | 8 | 
| 9 import '../common.dart'; | 9 import '../common.dart'; | 
| 10 import '../compiler.dart' show Compiler; | 10 import '../compiler.dart' show Compiler; | 
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 372         break; | 372         break; | 
| 373       case StaticUseKind.GENERAL: | 373       case StaticUseKind.GENERAL: | 
| 374       case StaticUseKind.STATIC_TEAR_OFF: | 374       case StaticUseKind.STATIC_TEAR_OFF: | 
| 375       case StaticUseKind.FIELD_GET: | 375       case StaticUseKind.FIELD_GET: | 
| 376       case StaticUseKind.CONSTRUCTOR_INVOKE: | 376       case StaticUseKind.CONSTRUCTOR_INVOKE: | 
| 377       case StaticUseKind.CONST_CONSTRUCTOR_INVOKE: | 377       case StaticUseKind.CONST_CONSTRUCTOR_INVOKE: | 
| 378         break; | 378         break; | 
| 379       case StaticUseKind.CLOSURE: | 379       case StaticUseKind.CLOSURE: | 
| 380         allClosures.add(element); | 380         allClosures.add(element); | 
| 381         break; | 381         break; | 
|  | 382       case StaticUseKind.DIRECT_INVOKE: | 
|  | 383         invariant( | 
|  | 384             element, 'Direct static use is not supported for resolution.'); | 
|  | 385         break; | 
| 382     } | 386     } | 
| 383   } | 387   } | 
| 384 | 388 | 
| 385   void forgetElement(Element element, Compiler compiler) { | 389   void forgetElement(Element element, Compiler compiler) { | 
| 386     allClosures.remove(element); | 390     allClosures.remove(element); | 
| 387     slowDirectlyNestedClosures(element).forEach(compiler.forgetElement); | 391     slowDirectlyNestedClosures(element).forEach(compiler.forgetElement); | 
| 388     closurizedMembers.remove(element); | 392     closurizedMembers.remove(element); | 
| 389     fieldSetters.remove(element); | 393     fieldSetters.remove(element); | 
| 390     _directlyInstantiatedClasses.remove(element); | 394     _directlyInstantiatedClasses.remove(element); | 
| 391     if (element is ClassElement) { | 395     if (element is ClassElement) { | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 512     ClassElement cls = type.element; | 516     ClassElement cls = type.element; | 
| 513     if (!cls.isAbstract | 517     if (!cls.isAbstract | 
| 514         // We can't use the closed-world assumption with native abstract | 518         // We can't use the closed-world assumption with native abstract | 
| 515         // classes; a native abstract class may have non-abstract subclasses | 519         // classes; a native abstract class may have non-abstract subclasses | 
| 516         // not declared to the program.  Instances of these classes are | 520         // not declared to the program.  Instances of these classes are | 
| 517         // indistinguishable from the abstract class. | 521         // indistinguishable from the abstract class. | 
| 518         || | 522         || | 
| 519         isNative | 523         isNative | 
| 520         // Likewise, if this registration comes from the mirror system, | 524         // Likewise, if this registration comes from the mirror system, | 
| 521         // all bets are off. | 525         // all bets are off. | 
| 522         // TODO(herhut): Track classes required by mirrors seperately. | 526         // TODO(herhut): Track classes required by mirrors separately. | 
| 523         || | 527         || | 
| 524         byMirrors) { | 528         byMirrors) { | 
| 525       _directlyInstantiatedClasses.add(cls); | 529       _directlyInstantiatedClasses.add(cls); | 
| 526     } | 530     } | 
| 527 | 531 | 
| 528     // TODO(johnniwinther): Replace this by separate more specific mappings that | 532     // TODO(johnniwinther): Replace this by separate more specific mappings that | 
| 529     // include the type arguments. | 533     // include the type arguments. | 
| 530     if (_implementedClasses.add(cls)) { | 534     if (_implementedClasses.add(cls)) { | 
| 531       onImplemented(cls); | 535       onImplemented(cls); | 
| 532       cls.allSupertypes.forEach((InterfaceType supertype) { | 536       cls.allSupertypes.forEach((InterfaceType supertype) { | 
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 644       case StaticUseKind.SUPER_TEAR_OFF: | 648       case StaticUseKind.SUPER_TEAR_OFF: | 
| 645         methodsNeedingSuperGetter.add(element); | 649         methodsNeedingSuperGetter.add(element); | 
| 646         break; | 650         break; | 
| 647       case StaticUseKind.SUPER_FIELD_SET: | 651       case StaticUseKind.SUPER_FIELD_SET: | 
| 648       case StaticUseKind.FIELD_SET: | 652       case StaticUseKind.FIELD_SET: | 
| 649       case StaticUseKind.GENERAL: | 653       case StaticUseKind.GENERAL: | 
| 650       case StaticUseKind.CLOSURE: | 654       case StaticUseKind.CLOSURE: | 
| 651       case StaticUseKind.FIELD_GET: | 655       case StaticUseKind.FIELD_GET: | 
| 652       case StaticUseKind.CONSTRUCTOR_INVOKE: | 656       case StaticUseKind.CONSTRUCTOR_INVOKE: | 
| 653       case StaticUseKind.CONST_CONSTRUCTOR_INVOKE: | 657       case StaticUseKind.CONST_CONSTRUCTOR_INVOKE: | 
|  | 658       case StaticUseKind.DIRECT_INVOKE: | 
| 654         break; | 659         break; | 
| 655     } | 660     } | 
| 656   } | 661   } | 
| 657 | 662 | 
| 658   void forgetElement(Element element, Compiler compiler) { | 663   void forgetElement(Element element, Compiler compiler) { | 
| 659     _directlyInstantiatedClasses.remove(element); | 664     _directlyInstantiatedClasses.remove(element); | 
| 660     if (element is ClassElement) { | 665     if (element is ClassElement) { | 
| 661       assert(invariant(element, element.thisType.isRaw, | 666       assert(invariant(element, element.thisType.isRaw, | 
| 662           message: 'Generic classes not supported (${element.thisType}).')); | 667           message: 'Generic classes not supported (${element.thisType}).')); | 
| 663       _instantiatedTypes..remove(element.rawType)..remove(element.thisType); | 668       _instantiatedTypes..remove(element.rawType)..remove(element.thisType); | 
| 664     } | 669     } | 
| 665   } | 670   } | 
| 666 } | 671 } | 
| OLD | NEW | 
|---|