Chromium Code Reviews| Index: pkg/compiler/lib/src/enqueue.dart |
| diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart |
| index 89bbeda4b56983ace7a047a810fbd975d92ef060..39ec4385cefbe2da7670472c8ccf54acd43ac9a7 100644 |
| --- a/pkg/compiler/lib/src/enqueue.dart |
| +++ b/pkg/compiler/lib/src/enqueue.dart |
| @@ -54,7 +54,9 @@ import 'universe/universe.dart'; |
| import 'universe/use.dart' show |
| DynamicUse, |
| StaticUse, |
| - StaticUseKind; |
| + StaticUseKind, |
| + TypeUse, |
| + TypeUseKind; |
| import 'universe/world_impact.dart' show |
| WorldImpact; |
| import 'util/util.dart' show |
| @@ -167,13 +169,7 @@ abstract class Enqueuer { |
| // TODO(johnniwinther): Optimize the application of the world impact. |
| worldImpact.dynamicUses.forEach(registerDynamicUse); |
| worldImpact.staticUses.forEach(registerStaticUse); |
| - worldImpact.instantiatedTypes.forEach(registerInstantiatedType); |
| - worldImpact.isChecks.forEach(registerIsCheck); |
| - worldImpact.asCasts.forEach(registerIsCheck); |
| - if (compiler.enableTypeAssertions) { |
| - worldImpact.checkedModeChecks.forEach(registerIsCheck); |
| - } |
| - worldImpact.onCatchTypes.forEach(registerIsCheck); |
| + worldImpact.typeUses.forEach(registerTypeUse); |
|
sigurdm
2015/11/04 10:37:31
Should you not special-case checked_mode_checks he
Johnni Winther
2015/11/04 13:41:09
This is now done in registerTypeUse
|
| worldImpact.closures.forEach(registerClosure); |
| } |
| @@ -640,7 +636,29 @@ abstract class Enqueuer { |
| } |
| } |
| - void registerIsCheck(DartType type) { |
| + void registerTypeUse(TypeUse typeUse) { |
| + DartType type = typeUse.type; |
| + switch (typeUse.kind) { |
| + case TypeUseKind.INSTANTIATION: |
| + registerInstantiatedType(type); |
|
sigurdm
2015/11/04 10:37:31
can `registerInstantiatedType` be private now?
Johnni Winther
2015/11/04 13:41:09
Not yet, but we are getting closer.
|
| + break; |
| + case TypeUseKind.INSTANTIATION: |
| + case TypeUseKind.IS_CHECK: |
| + case TypeUseKind.AS_CAST: |
| + case TypeUseKind.CATCH_TYPE: |
| + _registerIsCheck(type); |
| + break; |
| + case TypeUseKind.CHECKED_MODE_CHECK: |
| + if (compiler.enableTypeAssertions) { |
| + _registerIsCheck(type); |
| + } |
| + break; |
| + case TypeUseKind.TYPE_LITERAL: |
| + break; |
| + } |
| + } |
| + |
| + void _registerIsCheck(DartType type) { |
| type = universe.registerIsCheck(type, compiler); |
| // Even in checked mode, type annotations for return type and argument |
| // types do not imply type checks, so there should never be a check |