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..9485e514b92e9aae0e6d14dcd0b4afe7f2d0220c 100644 |
--- a/pkg/compiler/lib/src/enqueue.dart |
+++ b/pkg/compiler/lib/src/enqueue.dart |
@@ -182,15 +182,18 @@ abstract class Enqueuer { |
task.measure(() { |
ClassElement cls = type.element; |
cls.ensureResolved(resolution); |
+ bool isNative = compiler.backend.isNative(cls); |
universe.registerTypeInstantiation( |
type, |
- isNative: compiler.backend.isNative(cls), |
+ isNative: isNative, |
byMirrors: mirrorUsage, |
onImplemented: (ClassElement cls) { |
compiler.backend.registerImplementedClass( |
cls, this, compiler.globalDependencies); |
}); |
- processInstantiatedClass(cls); |
+ if (!cls.isAbstract || isNative || mirrorUsage) { |
Johnni Winther
2015/11/03 13:20:02
Make a variable and use for universe.register...
Johnni Winther
2015/11/06 13:43:23
Done.
|
+ processInstantiatedClass(cls); |
+ } |
}); |
} |
@@ -339,9 +342,10 @@ abstract class Enqueuer { |
superclass, this, compiler.globalDependencies); |
} |
- while (cls != null) { |
- processClass(cls); |
- cls = cls.superclass; |
+ ClassElement superclass = cls; |
+ while (superclass != null) { |
+ processClass(superclass); |
+ superclass = superclass.superclass; |
} |
}); |
} |