| 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 0d5b23273d5ec3a1c73167ca82bdc635ed438dbe..bc8a91760d80bf7c32df060ccd6d03693b75ddd2 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,43 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
|
| NativeBehavior getNativeBehaviorOf(Send node) => nativeBehaviors[node];
|
|
|
| processNativeBehavior(NativeBehavior behavior, cause) {
|
| + // TODO(ahe): Are the uses of compiler.globalDependencies truly
|
| + // global dependencies below?
|
| 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,
|
| + compiler.globalDependencies);
|
| } else if (type == SpecialType.JsObject) {
|
| - world.registerInstantiatedClass(compiler.objectClass);
|
| + world.registerInstantiatedClass(compiler.objectClass,
|
| + compiler.globalDependencies);
|
| }
|
| continue;
|
| }
|
| if (type is InterfaceType) {
|
| if (type.element == compiler.intClass) {
|
| - world.registerInstantiatedClass(compiler.intClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.intClass, compiler.globalDependencies);
|
| } else if (type.element == compiler.doubleClass) {
|
| - world.registerInstantiatedClass(compiler.doubleClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.doubleClass, compiler.globalDependencies);
|
| } else if (type.element == compiler.numClass) {
|
| - world.registerInstantiatedClass(compiler.doubleClass);
|
| - world.registerInstantiatedClass(compiler.intClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.doubleClass, compiler.globalDependencies);
|
| + world.registerInstantiatedClass(
|
| + compiler.intClass, compiler.globalDependencies);
|
| } else if (type.element == compiler.stringClass) {
|
| - world.registerInstantiatedClass(compiler.stringClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.stringClass, compiler.globalDependencies);
|
| } else if (type.element == compiler.nullClass) {
|
| - world.registerInstantiatedClass(compiler.nullClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.nullClass, compiler.globalDependencies);
|
| } else if (type.element == compiler.boolClass) {
|
| - world.registerInstantiatedClass(compiler.boolClass);
|
| + world.registerInstantiatedClass(
|
| + compiler.boolClass, compiler.globalDependencies);
|
| }
|
| }
|
| assert(type is DartType);
|
|
|