From 5ac087b265c4fb1ddec8625a273612c4641bf74e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 21 Mar 2024 09:28:51 +0100 Subject: [PATCH] IJPL-846 reduce GC - do not create intermediate ArrayList GitOrigin-RevId: c9a69c4d356ed5a50adb1c0dcdbb4937769862ce --- .../intellij/openapi/vfs/impl/VirtualFileManagerImpl.java | 5 +++-- .../com/intellij/openapi/vfs/newvfs/AsyncEventSupport.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/VirtualFileManagerImpl.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/VirtualFileManagerImpl.java index 17d2fed49714..23e71b6083c5 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/VirtualFileManagerImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/VirtualFileManagerImpl.java @@ -29,6 +29,7 @@ import kotlin.Unit; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Unmodifiable; import java.nio.file.FileSystems; import java.nio.file.Path; @@ -191,8 +192,8 @@ public class VirtualFileManagerImpl extends VirtualFileManager implements Dispos } @ApiStatus.Internal - public void addAsyncFileListenersTo(@NotNull List listeners) { - listeners.addAll(asyncFileListeners); + public @NotNull @Unmodifiable List withAsyncFileListeners(@NotNull @Unmodifiable List listeners) { + return ContainerUtil.concat(listeners, asyncFileListeners); } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/AsyncEventSupport.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/AsyncEventSupport.java index 1e43b5923857..fb3bc8471405 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/AsyncEventSupport.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/AsyncEventSupport.java @@ -80,8 +80,8 @@ public final class AsyncEventSupport { } List appliers = new ArrayList<>(); - List allListeners = new ArrayList<>(EP_NAME.getExtensionList()); - ((VirtualFileManagerImpl)VirtualFileManager.getInstance()).addAsyncFileListenersTo(allListeners); + List allListeners = + ((VirtualFileManagerImpl)VirtualFileManager.getInstance()).withAsyncFileListeners(EP_NAME.getExtensionList()); for (AsyncFileListener listener : allListeners) { ProgressManager.checkCanceled(); long startNs = System.nanoTime();