Faster component loading (better cache data structures)
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
796cdea50e
commit
b59bd9d6a6
@@ -21,7 +21,7 @@ import java.lang.reflect.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
private object ClassTraversalCache {
|
private object ClassTraversalCache {
|
||||||
private val cache = ContainerUtil.createConcurrentWeakKeySoftValueMap<Class<*>, ClassInfo>()
|
private val cache = ContainerUtil.newConcurrentMap<Class<*>, ClassInfo>()
|
||||||
|
|
||||||
fun getClassInfo(c: Class<*>): ClassInfo {
|
fun getClassInfo(c: Class<*>): ClassInfo {
|
||||||
val classInfo = cache.get(c)
|
val classInfo = cache.get(c)
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.container
|
|||||||
import com.intellij.util.containers.MultiMap
|
import com.intellij.util.containers.MultiMap
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.io.PrintStream
|
import java.io.PrintStream
|
||||||
import java.lang.IllegalStateException
|
|
||||||
import java.lang.reflect.Modifier
|
import java.lang.reflect.Modifier
|
||||||
import java.lang.reflect.ParameterizedType
|
import java.lang.reflect.ParameterizedType
|
||||||
import java.lang.reflect.Type
|
import java.lang.reflect.Type
|
||||||
@@ -86,7 +85,7 @@ class ComponentStorage(private val myId: String, parent: ComponentStorage?) : Va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dump(printer: PrintStream): Unit = with (printer) {
|
fun dump(printer: PrintStream): Unit = with(printer) {
|
||||||
val heading = "Container: $myId"
|
val heading = "Container: $myId"
|
||||||
println(heading)
|
println(heading)
|
||||||
println("=".repeat(heading.length))
|
println("=".repeat(heading.length))
|
||||||
@@ -158,7 +157,10 @@ class ComponentStorage(private val myId: String, parent: ComponentStorage?) : Va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun inspectDependenciesAndRegisterAdhoc(context: ComponentResolveContext, descriptors: Collection<ComponentDescriptor>): LinkedHashSet<ComponentDescriptor> {
|
private fun inspectDependenciesAndRegisterAdhoc(
|
||||||
|
context: ComponentResolveContext,
|
||||||
|
descriptors: Collection<ComponentDescriptor>
|
||||||
|
): LinkedHashSet<ComponentDescriptor> {
|
||||||
val adhoc = LinkedHashSet<ComponentDescriptor>()
|
val adhoc = LinkedHashSet<ComponentDescriptor>()
|
||||||
val visitedTypes = HashSet<Type>()
|
val visitedTypes = HashSet<Type>()
|
||||||
for (descriptor in descriptors) {
|
for (descriptor in descriptors) {
|
||||||
@@ -168,8 +170,9 @@ class ComponentStorage(private val myId: String, parent: ComponentStorage?) : Va
|
|||||||
return adhoc
|
return adhoc
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun collectAdhocComponents(context: ComponentResolveContext, descriptor: ComponentDescriptor,
|
private fun collectAdhocComponents(
|
||||||
visitedTypes: HashSet<Type>, adhocDescriptors: LinkedHashSet<ComponentDescriptor>
|
context: ComponentResolveContext, descriptor: ComponentDescriptor,
|
||||||
|
visitedTypes: HashSet<Type>, adhocDescriptors: LinkedHashSet<ComponentDescriptor>
|
||||||
) {
|
) {
|
||||||
val dependencies = descriptor.getDependencies(context)
|
val dependencies = descriptor.getDependencies(context)
|
||||||
for (type in dependencies) {
|
for (type in dependencies) {
|
||||||
|
|||||||
Reference in New Issue
Block a user