From 862a785c11076ec9d6cccac85b65dabfd1faeb4d Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 9 Jun 2014 23:04:47 +0400 Subject: [PATCH] Use pcollections' HashPMap instead of ConcurrentHashMap in reflection --- core/runtime.jvm/src/kotlin/reflect/jvm/internal/util.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/runtime.jvm/src/kotlin/reflect/jvm/internal/util.kt b/core/runtime.jvm/src/kotlin/reflect/jvm/internal/util.kt index b1ed0ac560a..cf150b786b3 100644 --- a/core/runtime.jvm/src/kotlin/reflect/jvm/internal/util.kt +++ b/core/runtime.jvm/src/kotlin/reflect/jvm/internal/util.kt @@ -18,6 +18,7 @@ package kotlin.reflect.jvm.internal import java.lang.reflect.Method import java.util.concurrent.ConcurrentHashMap +import kotlin.reflect.jvm.internal.pcollections.HashPMap // TODO: use stdlib? suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN") @@ -47,13 +48,13 @@ private fun Class<*>.getMaybeDeclaredMethod(name: String, vararg parameterTypes: // TODO: should use weak references -private val foreignKClasses: MutableMap, KClassImpl<*>> = ConcurrentHashMap() +private var foreignKClasses = HashPMap.empty, KClassImpl<*>>()!! fun foreignKotlinClass(jClass: Class): KClassImpl { val cached = foreignKClasses[jClass] as? KClassImpl if (cached != null) return cached val result = KClassImpl(jClass) - foreignKClasses.put(jClass, result) + foreignKClasses = foreignKClasses.plus(jClass, result)!! return result }