From 53f66fda3bb51c7192c4936b68389008d55d358d Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 3 Aug 2011 19:50:30 +0400 Subject: [PATCH] conserve memory: do not store PsiFile in a node --- .../ide/scopeView/nodes/BasePsiNode.java | 17 +++++++++-------- .../packageDependencies/ui/FileNode.java | 8 +------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/nodes/BasePsiNode.java b/platform/lang-impl/src/com/intellij/ide/scopeView/nodes/BasePsiNode.java index 3e891ca1fc79..42c6b7f3907d 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/nodes/BasePsiNode.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/nodes/BasePsiNode.java @@ -34,15 +34,16 @@ import java.awt.*; * Date: 30-Jan-2006 */ public class BasePsiNode extends PackageDependenciesNode { - private SmartPsiElementPointer myPsiElementPointer = null; - private PsiFile myFile = null; + private final SmartPsiElementPointer myPsiElementPointer; public BasePsiNode(final T element) { super(element.getProject()); if (element.isValid()) { - myPsiElementPointer = SmartPointerManager.getInstance(element.getProject()).createLazyPointer(element); - myFile = element.getContainingFile(); - } + myPsiElementPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(element); + } + else { + myPsiElementPointer = null; + } } @Nullable @@ -67,8 +68,8 @@ public class BasePsiNode extends PackageDependenciesNode { @Nullable public Color getColor() { - if (myColor == null && myFile != null) { - myColor = FileStatusManager.getInstance(myFile.getProject()).getStatus(myFile.getVirtualFile()).getColor(); + if (myColor == null && getContainingFile() != null) { + myColor = FileStatusManager.getInstance(myProject).getStatus(myPsiElementPointer.getVirtualFile()).getColor(); if (myColor == null) { myColor = NOT_CHANGED; } @@ -104,7 +105,7 @@ public class BasePsiNode extends PackageDependenciesNode { } public PsiFile getContainingFile() { - return myFile; + return myPsiElementPointer.getContainingFile(); } public boolean isValid() { diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileNode.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileNode.java index 079896445180..bb8a48730cb6 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileNode.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileNode.java @@ -16,7 +16,6 @@ package com.intellij.packageDependencies.ui; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.vcs.FileStatusManager; @@ -33,10 +32,8 @@ import java.util.Map; import java.util.Set; public class FileNode extends PackageDependenciesNode { - private PsiFile myFile; private final VirtualFile myVFile; private final boolean myMarked; - private static final Logger LOG = Logger.getInstance("com.intellij.packageDependencies.ui.FileNode"); public FileNode(VirtualFile file, Project project, boolean marked) { super(project); @@ -125,9 +122,6 @@ public class FileNode extends PackageDependenciesNode { @Nullable private PsiFile getFile() { - if (myFile == null) { - myFile = PsiManager.getInstance(myProject).findFile(myVFile); - } - return myFile; + return PsiManager.getInstance(myProject).findFile(myVFile); } }