From 0df89408e2c547395e6d0def64512cdc5658b951 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 12 Nov 2015 13:59:01 +0100 Subject: [PATCH] spare cpu cycles during indexing by not allocating tons of NonCancelableIndicator and not calculating their native hashCode --- .../openapi/progress/impl/CoreProgressManager.java | 2 +- .../openapi/progress/impl/NonCancelableIndicator.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java b/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java index 1d01f6cb088d..10a4adda1573 100644 --- a/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java +++ b/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java @@ -167,7 +167,7 @@ public class CoreProgressManager extends ProgressManager implements Disposable { @Override public void executeNonCancelableSection(@NotNull Runnable runnable) { - executeProcessUnderProgress(runnable, new NonCancelableIndicator()); + executeProcessUnderProgress(runnable, NonCancelableIndicator.INSTANCE); } @Override diff --git a/platform/core-impl/src/com/intellij/openapi/progress/impl/NonCancelableIndicator.java b/platform/core-impl/src/com/intellij/openapi/progress/impl/NonCancelableIndicator.java index 6917ffcf878d..e5bd58dbb891 100644 --- a/platform/core-impl/src/com/intellij/openapi/progress/impl/NonCancelableIndicator.java +++ b/platform/core-impl/src/com/intellij/openapi/progress/impl/NonCancelableIndicator.java @@ -23,6 +23,16 @@ import com.intellij.openapi.progress.StandardProgressIndicator; import org.jetbrains.annotations.NotNull; class NonCancelableIndicator implements NonCancelableSection, StandardProgressIndicator { + static final NonCancelableIndicator INSTANCE = new NonCancelableIndicator() { + @Override + public int hashCode() { + return 0; + } + }; + + protected NonCancelableIndicator() { + } + @Override public void done() { ProgressIndicator currentIndicator = ProgressManager.getInstance().getProgressIndicator();