memory optimization
authorAlexey Kudravtsev <cdr@intellij.com>
Mon, 28 Jun 2010 14:03:05 +0000 (18:03 +0400)
committerAlexey Kudravtsev <cdr@intellij.com>
Wed, 30 Jun 2010 10:13:51 +0000 (14:13 +0400)
java/java-impl/src/com/intellij/psi/impl/compiled/ClsJavaCodeReferenceElementImpl.java
java/java-impl/src/com/intellij/psi/impl/compiled/ClsReferenceListImpl.java

index f99f24f8d252aafd2d6d6dd1c5c04c54f7af2c36..7238fb8feccd9d070a9266b269390271d6675679 100644 (file)
@@ -15,7 +15,6 @@
  */
 package com.intellij.psi.impl.compiled;
 
-import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.TextRange;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
@@ -35,8 +34,6 @@ import org.jetbrains.annotations.NotNull;
 import java.util.Map;
 
 public class ClsJavaCodeReferenceElementImpl extends ClsElementImpl implements PsiJavaCodeReferenceElement {
-  private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl");
-
   private final PsiElement myParent;
   private final String myCanonicalText;
   private final String myQualifiedName;
@@ -44,6 +41,7 @@ public class ClsJavaCodeReferenceElementImpl extends ClsElementImpl implements P
   private volatile PsiType[] myTypeParametersCachedTypes = null; // in left-to-right-order
   @NonNls private static final String EXTENDS_PREFIX = "?extends";
   @NonNls private static final String SUPER_PREFIX = "?super";
+  public static final ClsJavaCodeReferenceElementImpl[] EMPTY_ARRAY = new ClsJavaCodeReferenceElementImpl[0];
 
   public ClsJavaCodeReferenceElementImpl(PsiElement parent, String canonicalText) {
     myParent = parent;
index 0bc557db33ecc8a058dc1b9394f14b8c13f070f5..dd93dc09989a6900f77340f029299bedbfdb4bbb 100644 (file)
@@ -36,10 +36,12 @@ public class ClsReferenceListImpl extends ClsRepositoryPsiElement<PsiClassRefere
     synchronized (LAZY_BUILT_LOCK) {
       if (myRefs == null) {
         final String[] strings = getStub().getReferencedNames();
-        ClsJavaCodeReferenceElementImpl[] res = new ClsJavaCodeReferenceElementImpl[strings.length];
+        ClsJavaCodeReferenceElementImpl[] res = strings.length == 0 ?
+                                                ClsJavaCodeReferenceElementImpl.EMPTY_ARRAY :
+                                                new ClsJavaCodeReferenceElementImpl[strings.length];
         for (int i = 0; i < res.length; i++) {
-            res[i] = new ClsJavaCodeReferenceElementImpl(this, strings[i]);
-          }
+          res[i] = new ClsJavaCodeReferenceElementImpl(this, strings[i]);
+        }
         myRefs = res;
       }
       return myRefs;