From 920d5e8eb72ddcf2eb863fa3516e690427887352 Mon Sep 17 00:00:00 2001 From: Alexander Doroshko Date: Tue, 20 Oct 2015 17:56:28 +0300 Subject: [PATCH] create new DefaultActionGroup() lazily: save 40% of LineMarkersPass.addLineMarkers() --- .../execution/lineMarker/RunLineMarkerProvider.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerProvider.java b/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerProvider.java index 5b4a70dbebd4..c8bab0b1c432 100644 --- a/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerProvider.java +++ b/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerProvider.java @@ -40,7 +40,7 @@ public class RunLineMarkerProvider implements LineMarkerProvider { @Override public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { List contributors = RunLineMarkerContributor.EXTENSION.allForLanguage(element.getLanguage()); - final DefaultActionGroup actionGroup = new DefaultActionGroup(); + DefaultActionGroup actionGroup = null; Icon icon = null; for (RunLineMarkerContributor contributor : contributors) { RunLineMarkerContributor.Info info = contributor.getInfo(element); @@ -50,6 +50,9 @@ public class RunLineMarkerProvider implements LineMarkerProvider { if (icon == null) { icon = info.icon; } + if (actionGroup == null) { + actionGroup = new DefaultActionGroup(); + } for (AnAction action : info.actions) { actionGroup.add(new LineMarkerActionWrapper(element, action)); } @@ -57,7 +60,9 @@ public class RunLineMarkerProvider implements LineMarkerProvider { } if (icon == null) return null; - return new LineMarkerInfo(element, element.getTextOffset(), icon, Pass.UPDATE_ALL, null, null, GutterIconRenderer.Alignment.CENTER) { + final DefaultActionGroup finalActionGroup = actionGroup; + return new LineMarkerInfo(element, element.getTextOffset(), icon, Pass.UPDATE_ALL, null, null, + GutterIconRenderer.Alignment.CENTER) { @Nullable @Override public GutterIconRenderer createGutterRenderer() { @@ -75,7 +80,7 @@ public class RunLineMarkerProvider implements LineMarkerProvider { @Nullable @Override public ActionGroup getPopupMenuActions() { - return actionGroup; + return finalActionGroup; } }; }