From 897f7e5b47f112d33ced6a3a7ffb8a7e51985989 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 4 Dec 2015 20:48:36 +0300 Subject: [PATCH] avoid reverse iterating linked list --- .../debugger/jdi/ThreadReferenceProxyImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/jdi/ThreadReferenceProxyImpl.java b/java/debugger/impl/src/com/intellij/debugger/jdi/ThreadReferenceProxyImpl.java index 397b1eed45d6..9c4ee943d3c5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/jdi/ThreadReferenceProxyImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/jdi/ThreadReferenceProxyImpl.java @@ -27,6 +27,7 @@ import com.intellij.debugger.engine.jdi.ThreadReferenceProxy; import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Comparing; +import com.intellij.util.containers.ContainerUtil; import com.sun.jdi.*; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -84,7 +85,7 @@ public final class ThreadReferenceProxyImpl extends ObjectReferenceProxyImpl imp } catch (IllegalThreadStateException ignored) { myName = "zombie"; - } + } } return myName; } @@ -219,13 +220,12 @@ public final class ThreadReferenceProxyImpl extends ObjectReferenceProxyImpl imp //LOG.assertTrue(threadRef.isSuspended()); checkValid(); - if(myFrames == null) { + if (myFrames == null) { checkFrames(threadRef); - - myFrames = new ArrayList(frameCount()); - for (ListIterator iterator = myFramesFromBottom.listIterator(frameCount()); iterator.hasPrevious();) { - myFrames.add(iterator.previous()); - } + + int frameCount = frameCount(); + StackFrameProxyImpl[] frames = myFramesFromBottom.subList(0, frameCount).toArray(new StackFrameProxyImpl[frameCount]); + myFrames = ContainerUtil.reverse(Arrays.asList(frames)); } } catch (ObjectCollectedException ignored) {