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

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 2007353002: run dartfmt on dart2js (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
« no previous file with comments | « pkg/compiler/lib/src/dart_types.dart ('k') | pkg/compiler/lib/src/library_loader.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 deferred_load; 5 library deferred_load;
6 6
7 import 'common/backend_api.dart' show Backend; 7 import 'common/backend_api.dart' show Backend;
8 import 'common/tasks.dart' show CompilerTask; 8 import 'common/tasks.dart' show CompilerTask;
9 import 'common.dart'; 9 import 'common.dart';
10 import 'compiler.dart' show Compiler; 10 import 'compiler.dart' show Compiler;
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 if (!isProgramSplit) { 626 if (!isProgramSplit) {
627 allOutputUnits.add(mainOutputUnit); 627 allOutputUnits.add(mainOutputUnit);
628 return; 628 return;
629 } 629 }
630 if (main == null) return; 630 if (main == null) return;
631 LibraryElement mainLibrary = main.library; 631 LibraryElement mainLibrary = main.library;
632 _importedDeferredBy = new Map<_DeferredImport, Set<Element>>(); 632 _importedDeferredBy = new Map<_DeferredImport, Set<Element>>();
633 _constantsDeferredBy = new Map<_DeferredImport, Set<ConstantValue>>(); 633 _constantsDeferredBy = new Map<_DeferredImport, Set<ConstantValue>>();
634 _importedDeferredBy[_fakeMainImport] = _mainElements; 634 _importedDeferredBy[_fakeMainImport] = _mainElements;
635 635
636 reporter.withCurrentElement(mainLibrary, () => measure(() { 636 reporter.withCurrentElement(
637 // Starting from main, traverse the program and find all dependencies. 637 mainLibrary,
Siggi Cherem (dart-lang) 2016/05/25 17:04:16 thanks!
638 _mapDependencies(element: compiler.mainFunction, import: _fakeMainImport); 638 () => measure(() {
639 // Starting from main, traverse the program and find all
640 // dependencies.
641 _mapDependencies(
642 element: compiler.mainFunction, import: _fakeMainImport);
639 643
640 // Also add "global" dependencies to the main OutputUnit. These are 644 // Also add "global" dependencies to the main OutputUnit. These
641 // things that the backend needs but cannot associate with a particular 645 // are things that the backend needs but cannot associate with a
642 // element, for example, startRootIsolate. This set also contains 646 // particular element, for example, startRootIsolate. This set
643 // elements for which we lack precise information. 647 // also contains elements for which we lack precise information.
644 for (Element element in compiler.globalDependencies.otherDependencies) { 648 for (Element element
645 _mapDependencies(element: element, import: _fakeMainImport); 649 in compiler.globalDependencies.otherDependencies) {
646 } 650 _mapDependencies(element: element, import: _fakeMainImport);
651 }
647 652
648 // Now check to see if we have to add more elements due to mirrors. 653 // Now check to see if we have to add more elements due to
649 if (compiler.mirrorsLibrary != null) { 654 // mirrors.
650 _addMirrorElements(); 655 if (compiler.mirrorsLibrary != null) {
651 } 656 _addMirrorElements();
657 }
652 658
653 // Build the OutputUnits using these two maps. 659 // Build the OutputUnits using these two maps.
654 Map<Element, OutputUnit> elementToOutputUnitBuilder = 660 Map<Element, OutputUnit> elementToOutputUnitBuilder =
655 new Map<Element, OutputUnit>(); 661 new Map<Element, OutputUnit>();
656 Map<ConstantValue, OutputUnit> constantToOutputUnitBuilder = 662 Map<ConstantValue, OutputUnit> constantToOutputUnitBuilder =
657 new Map<ConstantValue, OutputUnit>(); 663 new Map<ConstantValue, OutputUnit>();
658 664
659 // Reverse the mappings. For each element record an OutputUnit collecting 665 // Reverse the mappings. For each element record an OutputUnit
660 // all deferred imports mapped to this element. Same for constants. 666 // collecting all deferred imports mapped to this element. Same
661 for (_DeferredImport import in _importedDeferredBy.keys) { 667 // for constants.
662 for (Element element in _importedDeferredBy[import]) { 668 for (_DeferredImport import in _importedDeferredBy.keys) {
663 // Only one file should be loaded when the program starts, so make 669 for (Element element in _importedDeferredBy[import]) {
664 // sure that only one OutputUnit is created for [fakeMainImport]. 670 // Only one file should be loaded when the program starts, so
665 if (import == _fakeMainImport) { 671 // make sure that only one OutputUnit is created for
666 elementToOutputUnitBuilder[element] = mainOutputUnit; 672 // [fakeMainImport].
667 } else { 673 if (import == _fakeMainImport) {
668 elementToOutputUnitBuilder 674 elementToOutputUnitBuilder[element] = mainOutputUnit;
669 .putIfAbsent(element, () => new OutputUnit()) 675 } else {
670 .imports 676 elementToOutputUnitBuilder
671 .add(import); 677 .putIfAbsent(element, () => new OutputUnit())
672 } 678 .imports
673 } 679 .add(import);
674 } 680 }
675 for (_DeferredImport import in _constantsDeferredBy.keys) { 681 }
676 for (ConstantValue constant in _constantsDeferredBy[import]) { 682 }
677 // Only one file should be loaded when the program starts, so make 683 for (_DeferredImport import in _constantsDeferredBy.keys) {
678 // sure that only one OutputUnit is created for [fakeMainImport]. 684 for (ConstantValue constant in _constantsDeferredBy[import]) {
679 if (import == _fakeMainImport) { 685 // Only one file should be loaded when the program starts, so
680 constantToOutputUnitBuilder[constant] = mainOutputUnit; 686 // make sure that only one OutputUnit is created for
681 } else { 687 // [fakeMainImport].
682 constantToOutputUnitBuilder 688 if (import == _fakeMainImport) {
683 .putIfAbsent(constant, () => new OutputUnit()) 689 constantToOutputUnitBuilder[constant] = mainOutputUnit;
684 .imports 690 } else {
685 .add(import); 691 constantToOutputUnitBuilder
686 } 692 .putIfAbsent(constant, () => new OutputUnit())
687 } 693 .imports
688 } 694 .add(import);
695 }
696 }
697 }
689 698
690 // Release maps; 699 // Release maps;
691 _importedDeferredBy = null; 700 _importedDeferredBy = null;
692 _constantsDeferredBy = null; 701 _constantsDeferredBy = null;
693 702
694 // Find all the output units elements/constants have been mapped to, and 703 // Find all the output units elements/constants have been mapped
695 // canonicalize them. 704 // to, and canonicalize them.
696 elementToOutputUnitBuilder 705 elementToOutputUnitBuilder
697 .forEach((Element element, OutputUnit outputUnit) { 706 .forEach((Element element, OutputUnit outputUnit) {
698 OutputUnit representative = allOutputUnits.lookup(outputUnit); 707 OutputUnit representative = allOutputUnits.lookup(outputUnit);
699 if (representative == null) { 708 if (representative == null) {
700 representative = outputUnit; 709 representative = outputUnit;
701 allOutputUnits.add(representative); 710 allOutputUnits.add(representative);
702 } 711 }
703 _elementToOutputUnit[element] = representative; 712 _elementToOutputUnit[element] = representative;
704 }); 713 });
705 constantToOutputUnitBuilder 714 constantToOutputUnitBuilder
706 .forEach((ConstantValue constant, OutputUnit outputUnit) { 715 .forEach((ConstantValue constant, OutputUnit outputUnit) {
707 OutputUnit representative = allOutputUnits.lookup(outputUnit); 716 OutputUnit representative = allOutputUnits.lookup(outputUnit);
708 if (representative == null) { 717 if (representative == null) {
709 representative = outputUnit; 718 representative = outputUnit;
710 allOutputUnits.add(representative); 719 allOutputUnits.add(representative);
711 } 720 }
712 _constantToOutputUnit[constant] = representative; 721 _constantToOutputUnit[constant] = representative;
713 }); 722 });
714 723
715 // Generate a unique name for each OutputUnit. 724 // Generate a unique name for each OutputUnit.
716 _assignNamesToOutputUnits(allOutputUnits); 725 _assignNamesToOutputUnits(allOutputUnits);
717 })); 726 }));
718 // Notify the impact strategy impacts are no longer needed for deferred 727 // Notify the impact strategy impacts are no longer needed for deferred
719 // load. 728 // load.
720 compiler.impactStrategy.onImpactUsed(IMPACT_USE); 729 compiler.impactStrategy.onImpactUsed(IMPACT_USE);
721 } 730 }
722 731
723 void beforeResolution(Compiler compiler) { 732 void beforeResolution(Compiler compiler) {
724 if (compiler.mainApp == null) return; 733 if (compiler.mainApp == null) return;
725 _allDeferredImports[_fakeMainImport] = compiler.mainApp; 734 _allDeferredImports[_fakeMainImport] = compiler.mainApp;
726 var lastDeferred; 735 var lastDeferred;
727 // When detecting duplicate prefixes of deferred libraries there are 4 736 // When detecting duplicate prefixes of deferred libraries there are 4
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 return result; 1011 return result;
1003 } 1012 }
1004 1013
1005 bool operator ==(other) { 1014 bool operator ==(other) {
1006 if (other is! _DeclaredDeferredImport) return false; 1015 if (other is! _DeclaredDeferredImport) return false;
1007 return declaration == other.declaration; 1016 return declaration == other.declaration;
1008 } 1017 }
1009 1018
1010 int get hashCode => declaration.hashCode * 17; 1019 int get hashCode => declaration.hashCode * 17;
1011 } 1020 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/dart_types.dart ('k') | pkg/compiler/lib/src/library_loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698