[kotlin.reflect] Introduce ClassValue-based cache for KClassImpl

* Replace pcollections with ClassValue/ConcurrentHashMap-based caches
* Do not store weak references, instead cache strong references and count on ClassValue to unload the corresponding classloader if necessary
* ConcurrentHashMap does not rely on WeakReference as it's only selected on Android where classloader leaks don't exist
* Update reflect/scripting JDK requirement to Java 8 in order to proceed

#KT-53454
#KT-50705


Merge-request: KT-MR-6788
Merged-by: Vsevolod Tolstopyatov <qwwdfsad@gmail.com>
This commit is contained in:
Vsevolod Tolstopyatov
2022-08-05 15:35:34 +00:00
committed by Space
parent d5164fbc86
commit 14b13a2f17
37 changed files with 110 additions and 1129 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ description = ''
apply plugin: 'kotlin'
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_6)
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
def includeJava9 = BuildPropertiesExtKt.getIncludeJava9(project.kotlinBuildProperties)
+2 -2
View File
@@ -20,7 +20,7 @@ plugins {
`java-library`
}
configureJavaOnlyToolchain(JdkMajorVersion.JDK_1_6)
configureJavaOnlyToolchain(JdkMajorVersion.JDK_1_8)
publish()
@@ -146,7 +146,7 @@ val proguard by task<CacheableProguardTask> {
injars(mapOf("filter" to "!META-INF/**,!**/*.kotlin_builtins"), proguardAdditionalInJars)
outjars(fileFrom(base.libsDirectory.asFile.get(), "${base.archivesName.get()}-$version-proguard.jar"))
javaLauncher.set(project.getToolchainLauncherFor(chooseJdk18ForJpsBuild(JdkMajorVersion.JDK_1_6)))
javaLauncher.set(project.getToolchainLauncherFor(chooseJdk18ForJpsBuild(JdkMajorVersion.JDK_1_8)))
libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardDeps)
libraryjars(
project.files(