Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/enqueue.dart |
| =================================================================== |
| --- sdk/lib/_internal/compiler/implementation/enqueue.dart (revision 14732) |
| +++ sdk/lib/_internal/compiler/implementation/enqueue.dart (working copy) |
| @@ -29,6 +29,7 @@ |
| final Set<ClassElement> seenClasses; |
| final Universe universe; |
| final Queue<WorkItem> queue; |
| + final Map<SourceString, List<Element>> interceptedElements; |
|
ahe
2012/11/12 13:24:11
Backend specific?
ngeoffray
2012/11/13 11:45:16
Done.
|
| /** |
| * Map from declaration elements to the [TreeElements] object holding the |
| @@ -48,6 +49,7 @@ |
| seenClasses = new Set<ClassElement>(), |
| universe = new Universe(), |
| queue = new Queue<WorkItem>(), |
| + interceptedElements = new Map<SourceString, List<Element>>(), |
| resolvedElements = new Map<Element, TreeElements>(); |
| bool get isResolutionQueue => identical(compiler.enqueuer.resolution, this); |
| @@ -141,6 +143,15 @@ |
| onRegisterInstantiatedClass(cls); |
| } |
| + void registerSpecialInstantiatedClass(ClassElement cls) { |
| + registerInstantiatedClass(cls); |
| + cls.forEachMember((_, Element member) { |
| + List<Element> list = interceptedElements.putIfAbsent( |
| + member.name, () => new List<Element>()); |
| + list.add(member); |
| + }); |
| + } |
| + |
| bool checkNoEnqueuedInvokedInstanceMethods() { |
| task.measure(() { |
| // Run through the classes and see if we need to compile methods. |