From 8a93e2cbf0a0d9939b69894b574f266ba33d571f Mon Sep 17 00:00:00 2001 From: Evgeny Pasynkov Date: Thu, 6 Dec 2012 15:52:18 +0100 Subject: [PATCH] StubBase: simpler lazy children collection implementation --- .../src/com/intellij/psi/stubs/StubBase.java | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/platform/core-api/src/com/intellij/psi/stubs/StubBase.java b/platform/core-api/src/com/intellij/psi/stubs/StubBase.java index 848ed7ae736d..7d5158eff437 100644 --- a/platform/core-api/src/com/intellij/psi/stubs/StubBase.java +++ b/platform/core-api/src/com/intellij/psi/stubs/StubBase.java @@ -26,15 +26,14 @@ import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.util.ArrayFactory; import com.intellij.util.ArrayUtil; +import com.intellij.util.SmartList; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; public abstract class StubBase extends ObjectStubBase implements StubElement { - private Object myChildren = null; // null for none, StubElement for single child, ArrayList for multiple children + private SmartList myChildren = null; private final IStubElementType myElementType; private volatile T myPsi; @@ -43,18 +42,9 @@ public abstract class StubBase extends ObjectStubBase list = new ArrayList(2); - list.add((StubElement)((StubBase)parent).myChildren); - list.add(this); - ((StubBase)parent).myChildren = list; - } - else { - ((ArrayList)((StubBase)parent).myChildren).add(this); - } + if (((StubBase)parent).myChildren == null) + ((StubBase)parent).myChildren = new SmartList(); + ((StubBase)parent).myChildren.add(this); } } @@ -69,10 +59,7 @@ public abstract class StubBase extends ObjectStubBase) myChildren; + return myChildren; } @Override