Don't record dependencies in SummaryDataStore.
It was added for DDC, but DDC does not use it anymore. At the same time,
URIs operations are expensive, and this code is showing in Observatory.
R=brianwilkerson@google.com, paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2996783002 .
diff --git a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
index 9e8c7d6..c586717 100644
--- a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
import 'package:analyzer/src/summary/resynthesize.dart';
import 'package:analyzer/src/task/dart.dart';
@@ -369,15 +368,6 @@
final List<PackageBundle> bundles = <PackageBundle>[];
/**
- * List of dependency information for the package bundles in this
- * [SummaryDataStore], in a form that is ready to store in a newly generated
- * summary. Computing this information has nonzero cost, so it is only
- * recorded if the [SummaryDataStore] is constructed with the argument
- * `recordDependencies`. Otherwise `null`.
- */
- final List<PackageDependencyInfoBuilder> dependencies;
-
- /**
* Map from the URI of a compilation unit to the unlinked summary of that
* compilation unit.
*/
@@ -405,18 +395,13 @@
/**
* Create a [SummaryDataStore] and populate it with the summaries in
- * [summaryPaths]. If [recordDependencyInfo] is `true`, record
- * [PackageDependencyInfo] for each summary, for later access via
- * [dependencies].
+ * [summaryPaths].
*/
SummaryDataStore(Iterable<String> summaryPaths,
- {bool recordDependencyInfo: false,
- bool disallowOverlappingSummaries: false,
+ {bool disallowOverlappingSummaries: false,
ResourceProvider resourceProvider})
: _summaryPaths = summaryPaths,
- _disallowOverlappingSummaries = disallowOverlappingSummaries,
- dependencies =
- recordDependencyInfo ? <PackageDependencyInfoBuilder>[] : null {
+ _disallowOverlappingSummaries = disallowOverlappingSummaries {
summaryPaths.forEach((String path) => _fillMaps(path, resourceProvider));
}
@@ -425,29 +410,6 @@
*/
void addBundle(String path, PackageBundle bundle) {
bundles.add(bundle);
- if (dependencies != null) {
- Set<String> includedPackageNames = new Set<String>();
- bool includesDartUris = false;
- bool includesFileUris = false;
- for (String uriString in bundle.unlinkedUnitUris) {
- Uri uri = Uri.parse(uriString);
- String scheme = uri.scheme;
- if (scheme == 'package') {
- List<String> pathSegments = uri.pathSegments;
- includedPackageNames.add(pathSegments.isEmpty ? '' : pathSegments[0]);
- } else if (scheme == 'file') {
- includesFileUris = true;
- } else if (scheme == 'dart') {
- includesDartUris = true;
- }
- }
- dependencies.add(new PackageDependencyInfoBuilder(
- includedPackageNames: includedPackageNames.toList()..sort(),
- includesDartUris: includesDartUris,
- includesFileUris: includesFileUris,
- apiSignature: bundle.apiSignature,
- summaryPath: path));
- }
for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
String uri = bundle.unlinkedUnitUris[i];
if (_disallowOverlappingSummaries &&
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart
index eaeede2..169e3af 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
-import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:convert/convert.dart';
import 'package:crypto/crypto.dart';
import 'package:front_end/src/base/api_signature.dart';
@@ -43,8 +42,6 @@
final Map<String, UnlinkedUnitBuilder> _unlinkedUnitMap =
<String, UnlinkedUnitBuilder>{};
final List<String> _unlinkedUnitHashes;
- final List<PackageDependencyInfoBuilder> _dependencies =
- <PackageDependencyInfoBuilder>[];
final bool _excludeHashes;
/**
@@ -85,19 +82,10 @@
unlinkedUnitHashes: _unlinkedUnitHashes,
majorVersion: currentMajorVersion,
minorVersion: currentMinorVersion,
- dependencies: _dependencies,
apiSignature: _computeApiSignature());
}
/**
- * Use the dependency information in [summaryDataStore] to populate the
- * dependencies in the package bundle being assembled.
- */
- void recordDependencies(SummaryDataStore summaryDataStore) {
- _dependencies.addAll(summaryDataStore.dependencies);
- }
-
- /**
* Compute the API signature for this package bundle.
*/
String _computeApiSignature() {
diff --git a/pkg/analyzer/test/src/summary/linker_test.dart b/pkg/analyzer/test/src/summary/linker_test.dart
index 3a768df..34a89f2 100644
--- a/pkg/analyzer/test/src/summary/linker_test.dart
+++ b/pkg/analyzer/test/src/summary/linker_test.dart
@@ -207,9 +207,6 @@
import "a.dart";
var y = x;
''', path: '/b.dart');
- expect(bundle2.dependencies, hasLength(1));
- expect(bundle2.dependencies[0].summaryPath, '/a.ds');
- expect(bundle2.dependencies[0].apiSignature, bundle1.apiSignature);
addBundle('/a.ds', bundle1);
addBundle('/b.ds', bundle2);
createLinker('''
diff --git a/pkg/analyzer/test/src/summary/package_bundle_reader_test.dart b/pkg/analyzer/test/src/summary/package_bundle_reader_test.dart
index 6f76030..73266b9 100644
--- a/pkg/analyzer/test/src/summary/package_bundle_reader_test.dart
+++ b/pkg/analyzer/test/src/summary/package_bundle_reader_test.dart
@@ -153,8 +153,8 @@
@reflectiveTest
class SummaryDataStoreTest {
- SummaryDataStore dataStore = new SummaryDataStore(<String>[],
- recordDependencyInfo: true, disallowOverlappingSummaries: true);
+ SummaryDataStore dataStore =
+ new SummaryDataStore(<String>[], disallowOverlappingSummaries: true);
PackageBundle bundle1 = new _PackageBundleMock();
PackageBundle bundle2 = new _PackageBundleMock();
@@ -170,16 +170,6 @@
test_addBundle() {
expect(dataStore.bundles, unorderedEquals([bundle1, bundle2]));
- expect(dataStore.dependencies[0].summaryPath, '/p1.ds');
- expect(dataStore.dependencies[0].apiSignature, 'signature1');
- expect(dataStore.dependencies[0].includedPackageNames, ['p1']);
- expect(dataStore.dependencies[0].includesFileUris, false);
- expect(dataStore.dependencies[0].includesDartUris, false);
- expect(dataStore.dependencies[1].summaryPath, '/p2.ds');
- expect(dataStore.dependencies[1].apiSignature, 'signature2');
- expect(dataStore.dependencies[1].includedPackageNames, ['p2']);
- expect(dataStore.dependencies[1].includesFileUris, false);
- expect(dataStore.dependencies[1].includesDartUris, false);
expect(dataStore.uriToSummaryPath,
containsPair('package:p1/u1.dart', '/p1.ds'));
// unlinkedMap
@@ -206,9 +196,6 @@
when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]);
when(bundle.apiSignature).thenReturn('signature');
dataStore.addBundle('/p3.ds', bundle);
- expect(dataStore.dependencies.last.includedPackageNames, []);
- expect(dataStore.dependencies.last.includesFileUris, false);
- expect(dataStore.dependencies.last.includesDartUris, true);
}
test_addBundle_fileUris() {
@@ -219,9 +206,6 @@
when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]);
when(bundle.apiSignature).thenReturn('signature');
dataStore.addBundle('/p3.ds', bundle);
- expect(dataStore.dependencies.last.includedPackageNames, []);
- expect(dataStore.dependencies.last.includesFileUris, true);
- expect(dataStore.dependencies.last.includesDartUris, false);
}
test_addBundle_multiProject() {
@@ -238,12 +222,11 @@
// p3 conflicts (overlaps) with existing summaries.
expect(() => dataStore.addBundle('/p3.ds', bundle),
throwsA(isConflictingSummaryException));
- expect(dataStore.dependencies.last.includedPackageNames, ['p1', 'p2']);
}
test_addBundle_multiProjectOverlap() {
- SummaryDataStore dataStore2 = new SummaryDataStore(<String>[],
- recordDependencyInfo: true, disallowOverlappingSummaries: false);
+ SummaryDataStore dataStore2 =
+ new SummaryDataStore(<String>[], disallowOverlappingSummaries: false);
_setupDataStore(dataStore2);
PackageBundle bundle = new _PackageBundleMock();
@@ -258,7 +241,6 @@
when(bundle.apiSignature).thenReturn('signature');
// p3 conflicts (overlaps) with existing summaries, but now allowed.
dataStore2.addBundle('/p3.ds', bundle);
- expect(dataStore2.dependencies.last.includedPackageNames, ['p1', 'p2']);
}
test_getContainingLibraryUris_libraryUri() {
diff --git a/pkg/analyzer/test/src/summary/summarize_ast_test.dart b/pkg/analyzer/test/src/summary/summarize_ast_test.dart
index 433f4da..8735602 100644
--- a/pkg/analyzer/test/src/summary/summarize_ast_test.dart
+++ b/pkg/analyzer/test/src/summary/summarize_ast_test.dart
@@ -290,7 +290,6 @@
PackageBundleBuilder createPackageBundle(String text,
{String path: '/test.dart', String uri}) {
PackageBundleAssembler assembler = new PackageBundleAssembler();
- assembler.recordDependencies(_filesToLink.summaryDataStore);
LinkerInputs linkerInputs = createLinkerInputs(text, path: path, uri: uri);
Map<String, LinkedLibraryBuilder> linkedLibraries = link(
linkerInputs.linkedLibraries,
@@ -338,6 +337,5 @@
/**
* Information about summaries to be included in the link process.
*/
- SummaryDataStore summaryDataStore =
- new SummaryDataStore([], recordDependencyInfo: true);
+ SummaryDataStore summaryDataStore = new SummaryDataStore([]);
}
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
index f64ab3b..b866ff2 100644
--- a/pkg/analyzer_cli/lib/src/build_mode.dart
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -223,7 +223,6 @@
}
// Perform linking.
_computeLinkedLibraries(unlinkedUris);
- assembler.recordDependencies(summaryDataStore);
}
// Write the whole package bundle.
@@ -294,8 +293,7 @@
void _createAnalysisDriver() {
// Read the summaries.
- summaryDataStore = new SummaryDataStore(<String>[],
- recordDependencyInfo: _shouldOutputSummary);
+ summaryDataStore = new SummaryDataStore(<String>[]);
// Adds a bundle at `path` to `summaryDataStore`.
PackageBundle addBundle(String path) {
diff --git a/pkg/dev_compiler/lib/src/compiler/code_generator.dart b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
index 18d5f742..51f3d76 100644
--- a/pkg/dev_compiler/lib/src/compiler/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
@@ -260,7 +260,6 @@
}
var assembler = new PackageBundleAssembler();
- assembler.recordDependencies(summaryData);
var uriToUnit = new Map<String, UnlinkedUnit>.fromIterable(units,
key: (u) => u.element.source.uri.toString(),
diff --git a/pkg/dev_compiler/lib/src/compiler/compiler.dart b/pkg/dev_compiler/lib/src/compiler/compiler.dart
index 1b33f50..baa5a77 100644
--- a/pkg/dev_compiler/lib/src/compiler/compiler.dart
+++ b/pkg/dev_compiler/lib/src/compiler/compiler.dart
@@ -89,7 +89,6 @@
// Read the summaries.
summaryData ??= new SummaryDataStore(options.summaryPaths,
resourceProvider: resourceProvider,
- recordDependencyInfo: true,
// TODO(vsm): Reset this to true once we cleanup internal build rules.
disallowOverlappingSummaries: false);
diff --git a/pkg/dev_compiler/web/web_command.dart b/pkg/dev_compiler/web/web_command.dart
index 00da902..0f0f98b 100644
--- a/pkg/dev_compiler/web/web_command.dart
+++ b/pkg/dev_compiler/web/web_command.dart
@@ -146,7 +146,7 @@
dartSdkPath: '/dart-sdk', dartSdkSummaryPath: dartSdkSummaryPath);
var summaryDataStore = new SummaryDataStore(options.summaryPaths,
- resourceProvider: resourceProvider, recordDependencyInfo: true);
+ resourceProvider: resourceProvider);
for (var i = 0; i < summaryBytes.length; i++) {
var bytes = summaryBytes[i];