Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: sdk/lib/_internal/compiler/implementation/compiler.dart

Issue 350693007: Load patches via callback. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 part of dart2js; 5 part of dart2js;
6 6
7 /** 7 /**
8 * If true, print a warning for each method that was resolved, but not 8 * If true, print a warning for each method that was resolved, but not
9 * compiled. 9 * compiled.
10 */ 10 */
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 bool isInterceptorClass(ClassElement element) => false; 396 bool isInterceptorClass(ClassElement element) => false;
397 397
398 void registerStaticUse(Element element, Enqueuer enqueuer) {} 398 void registerStaticUse(Element element, Enqueuer enqueuer) {}
399 399
400 /// This method is called immediately after the [LibraryElement] [library] has 400 /// This method is called immediately after the [LibraryElement] [library] has
401 /// been created. 401 /// been created.
402 void onLibraryCreated(LibraryElement library) {} 402 void onLibraryCreated(LibraryElement library) {}
403 403
404 /// This method is called immediately after the [library] and its parts have 404 /// This method is called immediately after the [library] and its parts have
405 /// been scanned. 405 /// been scanned.
406 void onLibraryScanned(LibraryElement library) {} 406 Future onLibraryScanned(LibraryElement library,
407 LibraryLoader loader) {
408 // TODO(johnniwinther): Move this to the JavaScript backend.
409 if (library.isPlatformLibrary && !library.isPatched) {
410 // Apply patch, if any.
411 Uri patchUri = compiler.resolvePatchUri(library.canonicalUri.path);
412 if (patchUri != null) {
413 return compiler.patchParser.patchLibrary(loader, patchUri, library);
414 }
415 }
416 return new Future.value();
417 }
407 418
408 /// This method is called when all new libraries loaded through 419 /// This method is called when all new libraries loaded through
409 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports 420 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports
410 /// have been computed. 421 /// have been computed.
411 Future onLibrariesLoaded(Map<Uri, LibraryElement> loadedLibraries) { 422 Future onLibrariesLoaded(Map<Uri, LibraryElement> loadedLibraries) {
412 return new Future.value(); 423 return new Future.value();
413 } 424 }
414 425
415 /// Called by [MirrorUsageAnalyzerTask] after it has merged all @MirrorsUsed 426 /// Called by [MirrorUsageAnalyzerTask] after it has merged all @MirrorsUsed
416 /// annotations. The arguments corresponds to the unions of the corresponding 427 /// annotations. The arguments corresponds to the unions of the corresponding
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 } finally { 754 } finally {
744 _currentElement = old; 755 _currentElement = old;
745 } 756 }
746 } 757 }
747 758
748 List<CompilerTask> tasks; 759 List<CompilerTask> tasks;
749 ScannerTask scanner; 760 ScannerTask scanner;
750 DietParserTask dietParser; 761 DietParserTask dietParser;
751 ParserTask parser; 762 ParserTask parser;
752 PatchParserTask patchParser; 763 PatchParserTask patchParser;
753 LibraryLoader libraryLoader; 764 LibraryLoaderTask libraryLoader;
754 TreeValidatorTask validator; 765 TreeValidatorTask validator;
755 ResolverTask resolver; 766 ResolverTask resolver;
756 closureMapping.ClosureTask closureToClassMapper; 767 closureMapping.ClosureTask closureToClassMapper;
757 TypeCheckerTask checker; 768 TypeCheckerTask checker;
758 IrBuilderTask irBuilder; 769 IrBuilderTask irBuilder;
759 ti.TypesTask typesTask; 770 ti.TypesTask typesTask;
760 Backend backend; 771 Backend backend;
761 772
762 /// The constant environment for the frontend interpretation of compile-time 773 /// The constant environment for the frontend interpretation of compile-time
763 /// constants. 774 /// constants.
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 } 1055 }
1045 backend.onLibraryCreated(library); 1056 backend.onLibraryCreated(library);
1046 } 1057 }
1047 1058
1048 /// This method is called immediately after the [library] and its parts have 1059 /// This method is called immediately after the [library] and its parts have
1049 /// been scanned. 1060 /// been scanned.
1050 /// 1061 ///
1051 /// Use this callback method to store references to specific member declared 1062 /// Use this callback method to store references to specific member declared
1052 /// in certain libraries. Note that [library] has not been patched yet, nor 1063 /// in certain libraries. Note that [library] has not been patched yet, nor
1053 /// has its imports/exports been resolved. 1064 /// has its imports/exports been resolved.
1054 void onLibraryScanned(LibraryElement library) { 1065 ///
1066 /// Use [callback] to register the creation and scanning of a patch library
floitsch 2014/06/24 09:01:54 s/callback/loader/
Johnni Winther 2014/06/24 09:12:58 Done.
1067 /// for [library].
1068 Future onLibraryScanned(LibraryElement library,
1069 LibraryLoader loader) {
floitsch 2014/06/24 09:01:54 might fit on one line now?
Johnni Winther 2014/06/24 09:12:58 Done.
1055 Uri uri = library.canonicalUri; 1070 Uri uri = library.canonicalUri;
1056 if (uri == DART_CORE) { 1071 if (uri == DART_CORE) {
1057 initializeCoreClasses(); 1072 initializeCoreClasses();
1058 identicalFunction = coreLibrary.find('identical'); 1073 identicalFunction = coreLibrary.find('identical');
1059 } else if (uri == DART_JS_HELPER) { 1074 } else if (uri == DART_JS_HELPER) {
1060 initializeHelperClasses(); 1075 initializeHelperClasses();
1061 assertMethod = jsHelperLibrary.find('assertHelper'); 1076 assertMethod = jsHelperLibrary.find('assertHelper');
1062 } else if (uri == DART_INTERNAL) { 1077 } else if (uri == DART_INTERNAL) {
1063 symbolImplementationClass = findRequiredElement(library, 'Symbol'); 1078 symbolImplementationClass = findRequiredElement(library, 'Symbol');
1064 } else if (uri == DART_MIRRORS) { 1079 } else if (uri == DART_MIRRORS) {
1065 mirrorSystemClass = findRequiredElement(library, 'MirrorSystem'); 1080 mirrorSystemClass = findRequiredElement(library, 'MirrorSystem');
1066 mirrorsUsedClass = findRequiredElement(library, 'MirrorsUsed'); 1081 mirrorsUsedClass = findRequiredElement(library, 'MirrorsUsed');
1067 } else if (uri == DART_ASYNC) { 1082 } else if (uri == DART_ASYNC) {
1068 deferredLibraryClass = findRequiredElement(library, 'DeferredLibrary'); 1083 deferredLibraryClass = findRequiredElement(library, 'DeferredLibrary');
1069 } else if (uri == DART_NATIVE_TYPED_DATA) { 1084 } else if (uri == DART_NATIVE_TYPED_DATA) {
1070 typedDataClass = findRequiredElement(library, 'NativeTypedData'); 1085 typedDataClass = findRequiredElement(library, 'NativeTypedData');
1071 } 1086 }
1072 backend.onLibraryScanned(library); 1087 return backend.onLibraryScanned(library, loader);
1073 } 1088 }
1074 1089
1075 /// This method is called when all new libraries loaded through 1090 /// This method is called when all new libraries loaded through
1076 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports 1091 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports
1077 /// have been computed. 1092 /// have been computed.
1078 /// 1093 ///
1079 /// [loadedLibraries] contains the newly loaded libraries. 1094 /// [loadedLibraries] contains the newly loaded libraries.
1080 /// 1095 ///
1081 /// The method returns a [Future] allowing for the loading of additional 1096 /// The method returns a [Future] allowing for the loading of additional
1082 /// libraries. 1097 /// libraries.
(...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after
2004 static NullSink outputProvider(String name, String extension) { 2019 static NullSink outputProvider(String name, String extension) {
2005 return new NullSink('$name.$extension'); 2020 return new NullSink('$name.$extension');
2006 } 2021 }
2007 } 2022 }
2008 2023
2009 /// Information about suppressed warnings and hints for a given library. 2024 /// Information about suppressed warnings and hints for a given library.
2010 class SuppressionInfo { 2025 class SuppressionInfo {
2011 int warnings = 0; 2026 int warnings = 0;
2012 int hints = 0; 2027 int hints = 0;
2013 } 2028 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698