OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart2js.compiler_base; | 5 library dart2js.compiler_base; |
6 | 6 |
7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
8 | 8 |
9 import '../compiler_new.dart' as api; | 9 import '../compiler_new.dart' as api; |
10 import 'closure.dart' as closureMapping show ClosureTask; | 10 import 'closure.dart' as closureMapping show ClosureTask; |
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
829 * the queues are empty (nothing was added after we stopped | 829 * the queues are empty (nothing was added after we stopped |
830 * processing the queues). Also compute the number of methods that | 830 * processing the queues). Also compute the number of methods that |
831 * were resolved, but not compiled (aka excess resolution). | 831 * were resolved, but not compiled (aka excess resolution). |
832 */ | 832 */ |
833 checkQueues(Enqueuer resolutionEnqueuer, Enqueuer codegenEnqueuer) { | 833 checkQueues(Enqueuer resolutionEnqueuer, Enqueuer codegenEnqueuer) { |
834 for (Enqueuer enqueuer in [resolutionEnqueuer, codegenEnqueuer]) { | 834 for (Enqueuer enqueuer in [resolutionEnqueuer, codegenEnqueuer]) { |
835 enqueuer.checkQueueIsEmpty(); | 835 enqueuer.checkQueueIsEmpty(); |
836 } | 836 } |
837 if (!REPORT_EXCESS_RESOLUTION) return; | 837 if (!REPORT_EXCESS_RESOLUTION) return; |
838 var resolved = new Set.from(resolutionEnqueuer.processedEntities); | 838 var resolved = new Set.from(resolutionEnqueuer.processedEntities); |
839 for (Element e in codegenEnqueuer.processedEntities) { | 839 for (MemberEntity e in codegenEnqueuer.processedEntities) { |
840 resolved.remove(e); | 840 resolved.remove(e); |
841 } | 841 } |
842 for (Element e in new Set.from(resolved)) { | 842 for (MemberEntity e in new Set.from(resolved)) { |
843 if (e.isClass || | 843 if (e.isField) { |
844 e.isField || | |
845 e.isTypeVariable || | |
846 e.isTypedef || | |
847 identical(e.kind, ElementKind.ABSTRACT_FIELD)) { | |
848 resolved.remove(e); | 844 resolved.remove(e); |
849 } | 845 } |
850 if (identical(e.kind, ElementKind.GENERATIVE_CONSTRUCTOR)) { | 846 if (e.isConstructor && (e as ConstructorEntity).isGenerativeConstructor) { |
851 resolved.remove(e); | 847 resolved.remove(e); |
852 } | 848 } |
853 if (backend.isTargetSpecificLibrary(e.library)) { | 849 if (backend.isTargetSpecificLibrary(e.library)) { |
854 resolved.remove(e); | 850 resolved.remove(e); |
855 } | 851 } |
856 } | 852 } |
857 reporter.log('Excess resolution work: ${resolved.length}.'); | 853 reporter.log('Excess resolution work: ${resolved.length}.'); |
858 for (Element e in resolved) { | 854 for (MemberEntity e in resolved) { |
859 reporter.reportWarningMessage(e, MessageKind.GENERIC, | 855 reporter.reportWarningMessage(e, MessageKind.GENERIC, |
860 {'text': 'Warning: $e resolved but not compiled.'}); | 856 {'text': 'Warning: $e resolved but not compiled.'}); |
861 } | 857 } |
862 } | 858 } |
863 | 859 |
864 void showResolutionProgress(Enqueuer enqueuer) { | 860 void showResolutionProgress(Enqueuer enqueuer) { |
865 if (shouldPrintProgress) { | 861 if (shouldPrintProgress) { |
866 // TODO(ahe): Add structured diagnostics to the compiler API and | 862 // TODO(ahe): Add structured diagnostics to the compiler API and |
867 // use it to separate this from the --verbose option. | 863 // use it to separate this from the --verbose option. |
868 assert(phase == PHASE_RESOLVING); | 864 assert(phase == PHASE_RESOLVING); |
(...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2002 ResolutionFunctionType getLocalFunctionType(LocalFunctionElement function) { | 1998 ResolutionFunctionType getLocalFunctionType(LocalFunctionElement function) { |
2003 return function.type; | 1999 return function.type; |
2004 } | 2000 } |
2005 | 2001 |
2006 @override | 2002 @override |
2007 ResolutionDartType getUnaliasedType(ResolutionDartType type) { | 2003 ResolutionDartType getUnaliasedType(ResolutionDartType type) { |
2008 type.computeUnaliased(_resolution); | 2004 type.computeUnaliased(_resolution); |
2009 return type.unaliased; | 2005 return type.unaliased; |
2010 } | 2006 } |
2011 } | 2007 } |
OLD | NEW |