From 8e5c48160fd34c442cd35769bd7fa12d0f2f9d45 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Tue, 3 Sep 2019 16:24:07 +0200 Subject: [PATCH] Gradle: intern LibraryData's paths (until dependency graph is optimized IDEA-218166) GitOrigin-RevId: 15f0f0d3453f95f996f939068826974286d7bcf5 --- .../openapi/externalSystem/model/project/LibraryData.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/LibraryData.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/LibraryData.java index f1d019f560cd..62874c813e6d 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/LibraryData.java +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/LibraryData.java @@ -5,12 +5,16 @@ import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.serialization.PropertyMapping; +import com.intellij.util.containers.Interner; +import com.intellij.util.containers.WeakInterner; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; public final class LibraryData extends AbstractNamedData implements Named, ProjectCoordinate { + private final static Interner ourPathInterner = new WeakInterner<>(); + private final Map> paths = new EnumMap<>(LibraryPathType.class); private final boolean unresolved; @@ -81,7 +85,7 @@ public final class LibraryData extends AbstractNamedData implements Named, Proje if (paths == null) { this.paths.put(type, paths = new LinkedHashSet<>()); } - paths.add(ExternalSystemApiUtil.toCanonicalPath(path)); + paths.add(ourPathInterner.intern(ExternalSystemApiUtil.toCanonicalPath(path))); } public void forgetAllPaths() {