| Index: dart/sdk/lib/_internal/compiler/implementation/native_handler.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/native_handler.dart b/dart/sdk/lib/_internal/compiler/implementation/native_handler.dart
|
| index 92152e1e95b1768292ac85268561a128965a1405..00415f0c1eedf7b85032b18446a99bdb5cec13d0 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/native_handler.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/native_handler.dart
|
| @@ -218,7 +218,8 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
|
| pendingClasses.remove(classElement);
|
| registeredClasses.add(classElement);
|
|
|
| - world.registerInstantiatedClass(classElement);
|
| + // TODO(ahe): Is this really a global dependency?
|
| + world.registerInstantiatedClass(classElement, compiler.globalDependencies);
|
|
|
| // Also parse the node to know all its methods because otherwise it will
|
| // only be parsed if there is a call to one of its constructors.
|
| @@ -316,32 +317,34 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
|
| NativeBehavior getNativeBehaviorOf(Send node) => nativeBehaviors[node];
|
|
|
| processNativeBehavior(NativeBehavior behavior, cause) {
|
| + // TODO(ahe): Is this really a global dependency?
|
| + TreeElements elements = compiler.globalDependencies;
|
| bool allUsedBefore = unusedClasses.isEmpty;
|
| for (var type in behavior.typesInstantiated) {
|
| if (matchedTypeConstraints.contains(type)) continue;
|
| matchedTypeConstraints.add(type);
|
| if (type is SpecialType) {
|
| if (type == SpecialType.JsArray) {
|
| - world.registerInstantiatedClass(compiler.listClass);
|
| + world.registerInstantiatedClass(compiler.listClass, elements);
|
| } else if (type == SpecialType.JsObject) {
|
| - world.registerInstantiatedClass(compiler.objectClass);
|
| + world.registerInstantiatedClass(compiler.objectClass, elements);
|
| }
|
| continue;
|
| }
|
| if (type is InterfaceType) {
|
| if (type.element == compiler.intClass) {
|
| - world.registerInstantiatedClass(compiler.intClass);
|
| + world.registerInstantiatedClass(compiler.intClass, elements);
|
| } else if (type.element == compiler.doubleClass) {
|
| - world.registerInstantiatedClass(compiler.doubleClass);
|
| + world.registerInstantiatedClass(compiler.doubleClass, elements);
|
| } else if (type.element == compiler.numClass) {
|
| - world.registerInstantiatedClass(compiler.doubleClass);
|
| - world.registerInstantiatedClass(compiler.intClass);
|
| + world.registerInstantiatedClass(compiler.doubleClass, elements);
|
| + world.registerInstantiatedClass(compiler.intClass, elements);
|
| } else if (type.element == compiler.stringClass) {
|
| - world.registerInstantiatedClass(compiler.stringClass);
|
| + world.registerInstantiatedClass(compiler.stringClass, elements);
|
| } else if (type.element == compiler.nullClass) {
|
| - world.registerInstantiatedClass(compiler.nullClass);
|
| + world.registerInstantiatedClass(compiler.nullClass, elements);
|
| } else if (type.element == compiler.boolClass) {
|
| - world.registerInstantiatedClass(compiler.boolClass);
|
| + world.registerInstantiatedClass(compiler.boolClass, elements);
|
| }
|
| }
|
| assert(type is DartType);
|
|
|