diff --git a/platform/lang-impl/src/com/intellij/ide/bookmarks/Bookmark.java b/platform/lang-impl/src/com/intellij/ide/bookmarks/Bookmark.java index 6782c8cc545e..683b0e2557ab 100644 --- a/platform/lang-impl/src/com/intellij/ide/bookmarks/Bookmark.java +++ b/platform/lang-impl/src/com/intellij/ide/bookmarks/Bookmark.java @@ -54,7 +54,6 @@ import com.intellij.ui.ColorUtil; import com.intellij.ui.JBColor; import com.intellij.ui.RetrievableIcon; import com.intellij.util.PlatformIcons; -import com.intellij.util.containers.WeakHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,7 +68,7 @@ public class Bookmark implements Navigatable, Comparable { private final VirtualFile myFile; @NotNull private OpenFileDescriptor myTarget; private final Project myProject; - private WeakHashMap> myHighlighterRefs; + private Reference myHighlighterRef; private String myDescription; private char myMnemonic = 0; @@ -135,10 +134,7 @@ public class Bookmark implements Navigatable, Comparable { else { highlighter = null; } - if (myHighlighterRefs == null) myHighlighterRefs = new WeakHashMap<>(); - if (highlighter != null) { - myHighlighterRefs.put(markup.getDocument(), new WeakReference(highlighter)); - } + myHighlighterRef = highlighter == null ? null : new WeakReference(highlighter); return highlighter; } @@ -148,7 +144,6 @@ public class Bookmark implements Navigatable, Comparable { } public void release() { - try { int line = getLine(); if (line < 0) { return; @@ -160,18 +155,15 @@ public class Bookmark implements Navigatable, Comparable { if (markupDocument.getLineCount() <= line) return; RangeHighlighterEx highlighter = findMyHighlighter(); if (highlighter != null) { + myHighlighterRef = null; highlighter.dispose(); } - } finally { - myHighlighterRefs = null; - } } private RangeHighlighterEx findMyHighlighter() { final Document document = getDocument(); if (document == null) return null; - Reference reference = myHighlighterRefs != null ? myHighlighterRefs.get(document) : null; - RangeHighlighterEx result = SoftReference.dereference(reference); + RangeHighlighterEx result = SoftReference.dereference(myHighlighterRef); if (result != null) { return result; } @@ -190,10 +182,7 @@ public class Bookmark implements Navigatable, Comparable { return true; }); result = found.get(); - if (result != null) { - if (myHighlighterRefs == null) myHighlighterRefs = new WeakHashMap<>(); - myHighlighterRefs.put(document, new WeakReference(result)); - } + myHighlighterRef = result == null ? null : new WeakReference(result); return result; }