From 9d21d0c476ce00fcbdbaacbb0b624b126a65c93b Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Fri, 8 Nov 2024 14:47:30 +0100 Subject: [PATCH] [debugger] dropped ClassesByName cache creation - it is not needed any more, we have fast classesByName in jb-jdi GitOrigin-RevId: 43529dea80f40a8c972a09d20c63e843b33086be --- .../debugger/engine/AsyncStacksUtils.java | 3 +-- .../engine/CollectionBreakpointUtils.java | 3 +-- .../debugger/impl/DebuggerUtilsEx.java | 26 +++++-------------- .../base/util/evaluate/ExecutionContext.kt | 5 ---- .../debugger/coroutine/proxy/LocationCache.kt | 2 +- 5 files changed, 9 insertions(+), 30 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/AsyncStacksUtils.java b/java/debugger/impl/src/com/intellij/debugger/engine/AsyncStacksUtils.java index 6e2e53a9deed..d4aa86e007d5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/AsyncStacksUtils.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/AsyncStacksUtils.java @@ -110,7 +110,6 @@ public final class AsyncStacksUtils { evaluationContext); if (value != null) { List res = new ArrayList<>(); - ClassesByNameProvider classesByName = ClassesByNameProvider.createCache(virtualMachineProxy.allClasses()); try (DataInputStream dis = new DataInputStream(new ByteArrayInputStream(value.getBytes(StandardCharsets.ISO_8859_1)))) { while (dis.available() > 0) { StackFrameItem item = null; @@ -119,7 +118,7 @@ public final class AsyncStacksUtils { String methodName = dis.readUTF(); int line = dis.readInt(); Location location = - DebuggerUtilsEx.findOrCreateLocation(virtualMachineProxy.getVirtualMachine(), classesByName, className, methodName, line); + DebuggerUtilsEx.findOrCreateLocation(virtualMachineProxy.getVirtualMachine(), className, methodName, line); item = new StackFrameItem(location, null); } res.add(item); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/CollectionBreakpointUtils.java b/java/debugger/impl/src/com/intellij/debugger/engine/CollectionBreakpointUtils.java index dd1e2830f487..091e15a5033f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/CollectionBreakpointUtils.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/CollectionBreakpointUtils.java @@ -167,14 +167,13 @@ public final class CollectionBreakpointUtils { String message, VirtualMachineProxyImpl virtualMachineProxy) { List items = new ArrayList<>(); - ClassesByNameProvider classesByName = ClassesByNameProvider.createCache(virtualMachineProxy.allClasses()); try (DataInputStream dis = new DataInputStream(new ByteArrayInputStream(message.getBytes(StandardCharsets.ISO_8859_1)))) { while (dis.available() > 0) { String className = dis.readUTF(); String methodName = dis.readUTF(); int line = dis.readInt(); Location location = - DebuggerUtilsEx.findOrCreateLocation(virtualMachineProxy.getVirtualMachine(), classesByName, className, methodName, line); + DebuggerUtilsEx.findOrCreateLocation(virtualMachineProxy.getVirtualMachine(), className, methodName, line); StackFrameItem item = new StackFrameItem(location, null); items.add(item); } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java index 3fdf62e172f3..c96d07342ebf 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java @@ -13,7 +13,10 @@ import com.intellij.debugger.engine.evaluation.*; import com.intellij.debugger.engine.evaluation.expression.ExpressionEvaluator; import com.intellij.debugger.engine.evaluation.expression.UnBoxingEvaluator; import com.intellij.debugger.engine.requests.RequestManagerImpl; -import com.intellij.debugger.jdi.*; +import com.intellij.debugger.jdi.GeneratedLocation; +import com.intellij.debugger.jdi.GeneratedReferenceType; +import com.intellij.debugger.jdi.JvmtiError; +import com.intellij.debugger.jdi.VirtualMachineProxyImpl; import com.intellij.debugger.memory.ui.CollectionHistoryView; import com.intellij.debugger.requests.Requestor; import com.intellij.debugger.ui.breakpoints.Breakpoint; @@ -1194,16 +1197,8 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { } @NotNull - public static Location findOrCreateLocation(@NotNull VirtualMachine virtualMachine, StackTraceElement stackTraceElement) { - return findOrCreateLocation(virtualMachine, virtualMachine::classesByName, stackTraceElement); - } - - @NotNull - public static Location findOrCreateLocation(@NotNull VirtualMachine virtualMachine, - @NotNull ClassesByNameProvider classesByName, - StackTraceElement stackTraceElement) { + public static Location findOrCreateLocation(@NotNull VirtualMachine virtualMachine, @NotNull StackTraceElement stackTraceElement) { return findOrCreateLocation(virtualMachine, - classesByName, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), stackTraceElement.getLineNumber()); @@ -1214,16 +1209,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { @NotNull String className, @NotNull String methodName, int line) { - return findOrCreateLocation(virtualMachine, virtualMachine::classesByName, className, methodName, line); - } - - @NotNull - public static Location findOrCreateLocation(@NotNull VirtualMachine virtualMachine, - @NotNull ClassesByNameProvider classesByName, - @NotNull String className, - @NotNull String methodName, - int line) { - ReferenceType classType = ContainerUtil.getFirstItem(classesByName.get(className)); + ReferenceType classType = ContainerUtil.getFirstItem(virtualMachine.classesByName(className)); if (classType == null) { classType = new GeneratedReferenceType(virtualMachine, className); } diff --git a/plugins/kotlin/jvm-debugger/base/util/src/org/jetbrains/kotlin/idea/debugger/base/util/evaluate/ExecutionContext.kt b/plugins/kotlin/jvm-debugger/base/util/src/org/jetbrains/kotlin/idea/debugger/base/util/evaluate/ExecutionContext.kt index 1289aa465247..1b7ffc334b80 100644 --- a/plugins/kotlin/jvm-debugger/base/util/src/org/jetbrains/kotlin/idea/debugger/base/util/evaluate/ExecutionContext.kt +++ b/plugins/kotlin/jvm-debugger/base/util/src/org/jetbrains/kotlin/idea/debugger/base/util/evaluate/ExecutionContext.kt @@ -7,7 +7,6 @@ import com.intellij.debugger.engine.SuspendContextImpl import com.intellij.debugger.engine.evaluation.EvaluateException import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil import com.intellij.debugger.engine.evaluation.EvaluationContextImpl -import com.intellij.debugger.jdi.ClassesByNameProvider import com.intellij.debugger.jdi.StackFrameProxyImpl import com.intellij.debugger.jdi.VirtualMachineProxyImpl import com.intellij.openapi.project.Project @@ -46,10 +45,6 @@ class DefaultExecutionContext(evaluationContext: EvaluationContextImpl) : BaseEx } return ref } - - val classesCache: ClassesByNameProvider by lazy { - ClassesByNameProvider.createCache(vm.allClasses()) - } } sealed class BaseExecutionContext(val evaluationContext: EvaluationContextImpl) { diff --git a/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/LocationCache.kt b/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/LocationCache.kt index cb0f1f267819..a0f0ed46978d 100644 --- a/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/LocationCache.kt +++ b/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/LocationCache.kt @@ -8,5 +8,5 @@ import org.jetbrains.kotlin.idea.debugger.base.util.evaluate.DefaultExecutionCon class LocationCache(val context: DefaultExecutionContext) { fun createLocation(stackTraceElement: StackTraceElement): Location = - DebuggerUtilsEx.findOrCreateLocation(context.suspendContext.virtualMachineProxy.virtualMachine, context.classesCache, stackTraceElement) + DebuggerUtilsEx.findOrCreateLocation(context.suspendContext.virtualMachineProxy.virtualMachine, stackTraceElement) } \ No newline at end of file