diff --git a/src/org/jetbrains/eval4j/jdi/jdiEval.kt b/src/org/jetbrains/eval4j/jdi/jdiEval.kt index f9e09e380cc..e7dc6b4fce0 100644 --- a/src/org/jetbrains/eval4j/jdi/jdiEval.kt +++ b/src/org/jetbrains/eval4j/jdi/jdiEval.kt @@ -12,14 +12,22 @@ class JDIEval( private val thread: jdi.ThreadReference ) : Eval { override fun loadClass(classType: Type): Value { + val loadedClasses = vm.classesByName(classType.getInternalName()) + if (!loadedClasses.isEmpty()) { + return loadedClasses[0].classObject().asValue() + } return invokeStaticMethod( MethodDescription( CLASS.getInternalName(), "forName", - "(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;", + "(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;", true ), - listOf(classLoader.asValue()) + listOf( + vm.mirrorOf(classType.getInternalName().replace('/', '.')).asValue(), + boolean(true), + classLoader.asValue() + ) ) }