Skip to content

Commit

Permalink
Lazily index constraints
Browse files Browse the repository at this point in the history
It's not necessary to build the constraint index map if, for a node,
a constraint will never be lazily activated.
  • Loading branch information
melix committed May 9, 2019
1 parent 123c41b commit cc97554
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
Expand Up @@ -803,7 +803,6 @@ include 'other'
@RequiredFeatures([
@RequiredFeature(feature = GradleMetadataResolveRunner.REPOSITORY_TYPE, value = "maven"),
@RequiredFeature(feature = GradleMetadataResolveRunner.EXPERIMENTAL_RESOLVE_BEHAVIOR, value = "true"),
@RequiredFeature(feature = GradleMetadataResolveRunner.GRADLE_METADATA, value = "false"),
])
def "can force a published platform version by forcing the platform itself via a dependency"() {
repository {
Expand Down
Expand Up @@ -362,6 +362,7 @@ private List<? extends DependencyMetadata> dependencies() {
if (dependenciesMayChange) {
cachedDependencyStates = null;
cachedFilteredDependencyStates = null;
moduleIdToConstraints = null;
}
return metaData.getDependencies();
}
Expand Down Expand Up @@ -391,12 +392,7 @@ private List<DependencyState> cacheDependencyStates(List<? extends DependencyMet
int size = dependencies.size();
List<DependencyState> tmp = Lists.newArrayListWithCapacity(size);
for (DependencyMetadata dependency : dependencies) {
DependencyState ds = cachedDependencyStateFor(dependency);
if (dependency.isConstraint()) {
initializeModuleIdToConstraintMap(size);
moduleIdToConstraints.put(ds.getModuleIdentifier(), ds);
}
tmp.add(ds);
tmp.add(cachedDependencyStateFor(dependency));
}
return tmp;
}
Expand All @@ -419,7 +415,13 @@ private void createAndLinkEdgeState(DependencyState dependencyState, Collection<
*/
private void visitAdditionalConstraints(Collection<EdgeState> discoveredEdges) {
if (moduleIdToConstraints == null) {
return;
for (DependencyState dependencyState : cachedDependencyStates) {
DependencyMetadata dependency = dependencyState.getDependency();
if (dependency.isConstraint()) {
initializeModuleIdToConstraintMap(cachedDependencyStates.size());
moduleIdToConstraints.put(dependencyState.getModuleIdentifier(), dependencyState);
}
}
}
for (ModuleIdentifier module : upcomingNoLongerPendingConstraints) {
Collection<DependencyState> dependencyStates = moduleIdToConstraints.get(module);
Expand Down

0 comments on commit cc97554

Please sign in to comment.