diff --git a/java/java-impl/src/com/intellij/unscramble/ThreadDumpParser.java b/java/java-impl/src/com/intellij/unscramble/ThreadDumpParser.java index 632827edba4f..29655b3cdcec 100644 --- a/java/java-impl/src/com/intellij/unscramble/ThreadDumpParser.java +++ b/java/java-impl/src/com/intellij/unscramble/ThreadDumpParser.java @@ -129,7 +129,7 @@ public class ThreadDumpParser { if (state.getOperation() == ThreadOperation.Socket) { return -1; } - return StringUtil.countNewLines(state.getStackTrace()); + return state.getStackDepth(); } static boolean isKnownJdkThread(@NotNull String stackTrace) { diff --git a/java/java-impl/src/com/intellij/unscramble/ThreadState.java b/java/java-impl/src/com/intellij/unscramble/ThreadState.java index 6e2132c27c6b..a74eb4d99018 100644 --- a/java/java-impl/src/com/intellij/unscramble/ThreadState.java +++ b/java/java-impl/src/com/intellij/unscramble/ThreadState.java @@ -3,6 +3,7 @@ package com.intellij.unscramble; import com.intellij.diagnostic.ThreadDumper; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,6 +31,7 @@ public class ThreadState { @Nullable private ThreadOperation myOperation; private boolean myKnownJDKThread; + private int myStackDepth; public ThreadState(final String name, final String state) { myName = name; @@ -52,6 +54,11 @@ public class ThreadState { myStackTrace = stackTrace; myEmptyStackTrace = isEmpty; myKnownJDKThread = ThreadDumpParser.isKnownJdkThread(stackTrace); + myStackDepth = StringUtil.countNewLines(myStackTrace); + } + + int getStackDepth() { + return myStackDepth; } public boolean isKnownJDKThread() {