From f36447aab8812c0e1fd2e406407ae00ff4ff6137 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 19 Sep 2018 18:25:29 +0300 Subject: [PATCH] Remove usage of deprecated ConcurrentWeakFactoryMap in debugger (KT-25667) --- .../idea/debugger/NoStrataPositionManagerHelper.kt | 14 +++++--------- .../idea/debugger/evaluate/KotlinDebuggerCaches.kt | 6 +++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt index 1b0e8dc5a6e..da307c6a296 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/NoStrataPositionManagerHelper.kt @@ -26,8 +26,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ProjectFileIndex import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.search.GlobalSearchScope -import com.intellij.util.containers.ConcurrentWeakFactoryMap -import com.intellij.util.containers.ContainerUtil +import com.intellij.util.containers.ConcurrentFactoryMap import com.sun.jdi.Location import com.sun.jdi.ReferenceType import org.jetbrains.kotlin.codegen.inline.API @@ -110,17 +109,14 @@ fun getLastLineNumberForLocation(location: Location, project: Project, searchSco return lineMapping.values.firstOrNull { it.contains(lineNumber) }?.last() } -class WeakBytecodeDebugInfoStorage : ConcurrentWeakFactoryMap() { - override fun create(key: BinaryCacheKey): BytecodeDebugInfo? { - val bytes = readClassFileImpl(key.project, key.jvmName, key.file) ?: return null +fun createWeakBytecodeDebugInfoStorage(): ConcurrentMap { + return ConcurrentFactoryMap.createWeakMap { key -> + val bytes = readClassFileImpl(key.project, key.jvmName, key.file) ?: return@createWeakMap null val smapData = readDebugInfo(bytes) val lineNumberMapping = readLineNumberTableMapping(bytes) - return BytecodeDebugInfo(smapData, lineNumberMapping) - } - override fun createMap(): ConcurrentMap { - return ContainerUtil.createConcurrentWeakKeyWeakValueMap() + BytecodeDebugInfo(smapData, lineNumberMapping) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt index aec0423fc2f..139d28e2707 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinDebuggerCaches.kt @@ -41,7 +41,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks import org.jetbrains.kotlin.idea.debugger.BinaryCacheKey import org.jetbrains.kotlin.idea.debugger.BytecodeDebugInfo -import org.jetbrains.kotlin.idea.debugger.WeakBytecodeDebugInfoStorage +import org.jetbrains.kotlin.idea.debugger.createWeakBytecodeDebugInfoStorage import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriorityWithPCE import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -78,8 +78,8 @@ class KotlinDebuggerCaches(project: Project) { private val debugInfoCache = CachedValuesManager.getManager(project).createCachedValue( { - CachedValueProvider.Result( - WeakBytecodeDebugInfoStorage(), + CachedValueProvider.Result( + createWeakBytecodeDebugInfoStorage(), PsiModificationTracker.MODIFICATION_COUNT) }, false)