IJPL-846 reduce GC - do not create intermediate ArrayList

GitOrigin-RevId: c9a69c4d356ed5a50adb1c0dcdbb4937769862ce
This commit is contained in:
Vladimir Krivosheev
2024-03-22 10:46:31 +00:00
committed by intellij-monorepo-bot
parent f033b83892
commit 5ac087b265
2 changed files with 5 additions and 4 deletions
@@ -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<? super AsyncFileListener> listeners) {
listeners.addAll(asyncFileListeners);
public @NotNull @Unmodifiable List<AsyncFileListener> withAsyncFileListeners(@NotNull @Unmodifiable List<AsyncFileListener> listeners) {
return ContainerUtil.concat(listeners, asyncFileListeners);
}
@Override
@@ -80,8 +80,8 @@ public final class AsyncEventSupport {
}
List<AsyncFileListener.ChangeApplier> appliers = new ArrayList<>();
List<AsyncFileListener> allListeners = new ArrayList<>(EP_NAME.getExtensionList());
((VirtualFileManagerImpl)VirtualFileManager.getInstance()).addAsyncFileListenersTo(allListeners);
List<AsyncFileListener> allListeners =
((VirtualFileManagerImpl)VirtualFileManager.getInstance()).withAsyncFileListeners(EP_NAME.getExtensionList());
for (AsyncFileListener listener : allListeners) {
ProgressManager.checkCanceled();
long startNs = System.nanoTime();