[debugger] dropped ClassesByName cache creation - it is not needed any more, we have fast classesByName in jb-jdi

GitOrigin-RevId: 43529dea80f40a8c972a09d20c63e843b33086be
This commit is contained in:
Egor Ushakov
2024-11-08 19:47:36 +00:00
committed by intellij-monorepo-bot
parent d1ac3c1373
commit 9d21d0c476
5 changed files with 9 additions and 30 deletions
@@ -110,7 +110,6 @@ public final class AsyncStacksUtils {
evaluationContext);
if (value != null) {
List<StackFrameItem> 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);
@@ -167,14 +167,13 @@ public final class CollectionBreakpointUtils {
String message,
VirtualMachineProxyImpl virtualMachineProxy) {
List<StackFrameItem> 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);
}
@@ -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);
}
@@ -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) {
@@ -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)
}