7480befe32
Using of Kotlin reflection for simple operations like bean management is very slow First time initialization time: 261 ms for `copyBean(K2JVMCompilerArguments())` Subsequent calls of `copyBean(K2JVMCompilerArguments())` take 1.7 ms per call Unfortunately compiler argument handling is also used in Kotlin IntelliJ plugin to parse facet settings. Big projects may have thousands of Kotlin facets The same `ArgumentUtilsKt.copyProperties` frame is seen across various freezes: IDEA-252440 2-3 minutes freeze on Kotlin project reimporting in last 203 eap IDEA-253107 A lot of short freezes (1-3 sec) during Kotlin project development KTIJ-23501 Make main run configuration detection lighter KTIJ-22435 Unresponsive UI with 100% cpu Reflection issue: KT-56358 KClasses.getMemberProperties takes too much time This commit replaces all reflection stuff with a simple code generation Now `K2JVMCompilerArguments().clone()` goes to hard-to-measure time
51 lines
1.5 KiB
Kotlin
51 lines
1.5 KiB
Kotlin
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
|
|
|
plugins {
|
|
kotlin("jvm")
|
|
id("jps-compatible")
|
|
}
|
|
|
|
dependencies {
|
|
implementation(kotlinStdlib())
|
|
@Suppress("UNCHECKED_CAST")
|
|
rootProject.extra["kotlinJpsPluginEmbeddedDependencies"]
|
|
.let { it as List<String> }
|
|
.forEach { implementation(project(it)) }
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
rootProject.extra["kotlinJpsPluginMavenDependencies"]
|
|
.let { it as List<String> }
|
|
.forEach { implementation(project(it)) }
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
rootProject.extra["kotlinJpsPluginMavenDependenciesNonTransitiveLibs"]
|
|
.let { it as List<String> }
|
|
.forEach { implementation(it) { isTransitive = false } }
|
|
|
|
compileOnly(intellijUtilRt())
|
|
compileOnly(intellijPlatformUtil())
|
|
compileOnly(jpsModel())
|
|
compileOnly(jpsModelImpl())
|
|
compileOnly(jpsModelSerialization())
|
|
|
|
testImplementation(project(":compiler:cli-common"))
|
|
testImplementation(jpsModelSerialization())
|
|
testImplementation(commonDependency("junit:junit"))
|
|
testImplementation(kotlin("test-junit"))
|
|
}
|
|
|
|
sourceSets {
|
|
"main" {
|
|
projectDefault()
|
|
generatedDir()
|
|
}
|
|
"test" { projectDefault() }
|
|
}
|
|
|
|
runtimeJar()
|
|
|
|
tasks.withType<KotlinCompilationTask<*>>().configureEach {
|
|
compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead()
|
|
compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead()
|
|
} |