From a013e728b4bb4e244da658636d5c3efa5fb378e7 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 14 Feb 2012 16:01:04 +0400 Subject: [PATCH] memory --- .../daemon/impl/UpdateHighlightersUtil.java | 2 +- .../openapi/editor/impl/FoldRegionsTree.java | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java index ac3faa058657..5a6ab0b26e38 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java @@ -420,7 +420,7 @@ public class UpdateHighlightersUtil { infoEndOffset = docLength; } - info.text = document.getCharsSequence().subSequence(infoStartOffset, infoEndOffset).toString(); + info.text = document.getText().substring(infoStartOffset, infoEndOffset); info.group = group; int layer = getLayer(info, severityRegistrar); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionsTree.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionsTree.java index e799fc5ecb62..7d63435dbba8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionsTree.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionsTree.java @@ -20,12 +20,10 @@ import com.intellij.openapi.editor.FoldRegion; import com.intellij.openapi.editor.RangeMarker; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.CollectionFactory; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; +import java.util.*; /** * User: cdr @@ -80,7 +78,7 @@ abstract class FoldRegionsTree { void rebuild() { ArrayList topLevels = new ArrayList(myRegions.size() / 2); ArrayList visible = new ArrayList(myRegions.size()); - FoldRegion[] regions = myRegions.toArray(new FoldRegion[myRegions.size()]); + FoldRegion[] regions = toFoldArray(myRegions); FoldRegion currentToplevel = null; for (FoldRegion region : regions) { if (region.isValid()) { @@ -94,11 +92,11 @@ abstract class FoldRegionsTree { } } - myCachedTopLevelRegions = topLevels.isEmpty() ? FoldRegion.EMPTY_ARRAY : topLevels.toArray(new FoldRegion[topLevels.size()]); + myCachedTopLevelRegions = toFoldArray(topLevels); Arrays.sort(myCachedTopLevelRegions, BY_END_OFFSET); - FoldRegion[] visibleArrayed = visible.toArray(new FoldRegion[visible.size()]); + FoldRegion[] visibleArrayed = toFoldArray(visible); for (FoldRegion visibleRegion : visibleArrayed) { for (FoldRegion topLevelRegion : myCachedTopLevelRegions) { if (contains(topLevelRegion, visibleRegion)) { @@ -108,13 +106,18 @@ abstract class FoldRegionsTree { } } - myCachedVisible = visible.toArray(new FoldRegion[visible.size()]); + myCachedVisible = toFoldArray(visible); Arrays.sort(myCachedVisible, BY_END_OFFSET_REVERSE); updateCachedOffsets(); } + @NotNull + private static FoldRegion[] toFoldArray(@NotNull List topLevels) { + return topLevels.isEmpty() ? FoldRegion.EMPTY_ARRAY : topLevels.toArray(new FoldRegion[topLevels.size()]); + } + void updateCachedOffsets() { if (!isFoldingEnabled()) { return; @@ -285,7 +288,7 @@ abstract class FoldRegionsTree { } } - return allCollapsed.toArray(new FoldRegion[allCollapsed.size()]); + return toFoldArray(allCollapsed); } boolean intersectsRegion(int startOffset, int endOffset) { @@ -303,7 +306,7 @@ abstract class FoldRegionsTree { FoldRegion[] fetchAllRegions() { if (!isFoldingEnabledAndUpToDate()) return FoldRegion.EMPTY_ARRAY; - return myRegions.toArray(new FoldRegion[myRegions.size()]); + return toFoldArray(myRegions); } void removeRegion(FoldRegion range) {