Extract LookupTracker service from IncrementalCompilationComponents

We don't need a `TargetId` to `IncrementalCache` mapping in JS
This commit is contained in:
Alexey Tsvetkov
2017-07-31 14:28:59 +03:00
parent a4c7dbd693
commit bb2fab5b5d
11 changed files with 28 additions and 24 deletions
@@ -16,17 +16,13 @@
package org.jetbrains.kotlin.incremental package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
class IncrementalCompilationComponentsImpl( class IncrementalCompilationComponentsImpl(
private val caches: Map<TargetId, IncrementalCache>, private val caches: Map<TargetId, IncrementalCache>
private val lookupTracker: LookupTracker
): IncrementalCompilationComponents { ): IncrementalCompilationComponents {
override fun getIncrementalCache(target: TargetId): IncrementalCache = override fun getIncrementalCache(target: TargetId): IncrementalCache =
caches[target] ?: throw Exception("Incremental cache for target ${target.name} not found") caches[target] ?: throw Exception("Incremental cache for target ${target.name} not found")
override fun getLookupTracker(): LookupTracker = lookupTracker
} }
@@ -70,8 +70,8 @@ fun makeCompileServices(
compilationCanceledStatus: CompilationCanceledStatus? compilationCanceledStatus: CompilationCanceledStatus?
): Services = ): Services =
with(Services.Builder()) { with(Services.Builder()) {
register(IncrementalCompilationComponents::class.java, register(LookupTracker::class.java, lookupTracker)
IncrementalCompilationComponentsImpl(incrementalCaches, lookupTracker)) register(IncrementalCompilationComponents::class.java, IncrementalCompilationComponentsImpl(incrementalCaches))
compilationCanceledStatus?.let { compilationCanceledStatus?.let {
register(CompilationCanceledStatus::class.java, it) register(CompilationCanceledStatus::class.java, it)
} }
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
import org.jetbrains.kotlin.compiler.plugin.PluginCliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.PluginCliOptionProcessingException
import org.jetbrains.kotlin.compiler.plugin.cliPluginUsageString import org.jetbrains.kotlin.compiler.plugin.cliPluginUsageString
import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.javac.JavacWrapper import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
@@ -288,9 +289,12 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
configuration: CompilerConfiguration, arguments: K2JVMCompilerArguments, services: Services configuration: CompilerConfiguration, arguments: K2JVMCompilerArguments, services: Services
) { ) {
if (IncrementalCompilation.isEnabled()) { if (IncrementalCompilation.isEnabled()) {
val components = services.get(IncrementalCompilationComponents::class.java) services.get(LookupTracker::class.java)?.let {
if (components != null) { configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, it)
configuration.put(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS, components) }
services.get(IncrementalCompilationComponents::class.java)?.let {
configuration.put(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS, it)
} }
} }
@@ -131,7 +131,7 @@ object TopDownAnalyzerFacadeForJVM {
val module = moduleContext.module val module = moduleContext.module
val incrementalComponents = configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS) val incrementalComponents = configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS)
val lookupTracker = incrementalComponents?.getLookupTracker() ?: LookupTracker.DO_NOTHING val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: LookupTracker.DO_NOTHING
val targetIds = configuration.get(JVMConfigurationKeys.MODULES)?.map(::TargetId) val targetIds = configuration.get(JVMConfigurationKeys.MODULES)?.map(::TargetId)
val separateModules = !configuration.getBoolean(JVMConfigurationKeys.USE_SINGLE_MODULE) val separateModules = !configuration.getBoolean(JVMConfigurationKeys.USE_SINGLE_MODULE)
@@ -33,6 +33,7 @@ import kotlin.reflect.full.allSuperclasses
open class CompilerCallbackServicesFacadeServer( open class CompilerCallbackServicesFacadeServer(
val incrementalCompilationComponents: IncrementalCompilationComponents? = null, val incrementalCompilationComponents: IncrementalCompilationComponents? = null,
val lookupTracker: LookupTracker? = null,
val compilationCanceledStatus: CompilationCanceledStatus? = null, val compilationCanceledStatus: CompilationCanceledStatus? = null,
port: Int = SOCKET_ANY_FREE_PORT port: Int = SOCKET_ANY_FREE_PORT
) : CompilerCallbackServicesFacade, ) : CompilerCallbackServicesFacade,
@@ -66,17 +67,17 @@ open class CompilerCallbackServicesFacadeServer(
incrementalCompilationComponents!!.getIncrementalCache(target).close() incrementalCompilationComponents!!.getIncrementalCache(target).close()
} }
override fun lookupTracker_requiresPosition() = incrementalCompilationComponents!!.getLookupTracker().requiresPosition override fun lookupTracker_requiresPosition() = lookupTracker!!.requiresPosition
override fun lookupTracker_record(lookups: Collection<LookupInfo>) { override fun lookupTracker_record(lookups: Collection<LookupInfo>) {
val lookupTracker = incrementalCompilationComponents!!.getLookupTracker() val lookupTracker = lookupTracker!!
for (it in lookups) { for (it in lookups) {
lookupTracker.record(it.filePath, it.position, it.scopeFqName, it.scopeKind, it.name) lookupTracker.record(it.filePath, it.position, it.scopeFqName, it.scopeKind, it.name)
} }
} }
private val lookupTracker_isDoNothing: Boolean = incrementalCompilationComponents?.getLookupTracker() === LookupTracker.DO_NOTHING private val lookupTracker_isDoNothing: Boolean = lookupTracker === LookupTracker.DO_NOTHING
override fun lookupTracker_isDoNothing(): Boolean = lookupTracker_isDoNothing override fun lookupTracker_isDoNothing(): Boolean = lookupTracker_isDoNothing
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.daemon.client
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.daemon.common.* import org.jetbrains.kotlin.daemon.common.*
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.progress.CompilationCanceledStatus
import java.io.File import java.io.File
@@ -35,6 +36,7 @@ import kotlin.concurrent.thread
class CompilationServices( class CompilationServices(
val incrementalCompilationComponents: IncrementalCompilationComponents? = null, val incrementalCompilationComponents: IncrementalCompilationComponents? = null,
val lookupTracker: LookupTracker? = null,
val compilationCanceledStatus: CompilationCanceledStatus? = null val compilationCanceledStatus: CompilationCanceledStatus? = null
) )
@@ -170,6 +172,7 @@ object KotlinCompilerClient {
targetPlatform, targetPlatform,
args, args,
CompilerCallbackServicesFacadeServer(incrementalCompilationComponents = callbackServices.incrementalCompilationComponents, CompilerCallbackServicesFacadeServer(incrementalCompilationComponents = callbackServices.incrementalCompilationComponents,
lookupTracker = callbackServices.lookupTracker,
compilationCanceledStatus = callbackServices.compilationCanceledStatus, compilationCanceledStatus = callbackServices.compilationCanceledStatus,
port = port), port = port),
RemoteOutputStreamServer(compilerOut, port), RemoteOutputStreamServer(compilerOut, port),
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.daemon package org.jetbrains.kotlin.daemon
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
@@ -24,11 +23,6 @@ import org.jetbrains.kotlin.daemon.common.CompilerCallbackServicesFacade
import org.jetbrains.kotlin.daemon.common.DummyProfiler import org.jetbrains.kotlin.daemon.common.DummyProfiler
import org.jetbrains.kotlin.daemon.common.Profiler import org.jetbrains.kotlin.daemon.common.Profiler
class RemoteIncrementalCompilationComponentsClient(val facade: CompilerCallbackServicesFacade, eventManager: EventManager, val profiler: Profiler = DummyProfiler()) : IncrementalCompilationComponents { class RemoteIncrementalCompilationComponentsClient(val facade: CompilerCallbackServicesFacade, eventManager: EventManager, val profiler: Profiler = DummyProfiler()) : IncrementalCompilationComponents {
val remoteLookupTrackerClient = RemoteLookupTrackerClient(facade, eventManager, profiler)
override fun getIncrementalCache(target: TargetId): IncrementalCache = RemoteIncrementalCacheClient(facade, target, profiler) override fun getIncrementalCache(target: TargetId): IncrementalCache = RemoteIncrementalCacheClient(facade, target, profiler)
override fun getLookupTracker(): LookupTracker = remoteLookupTrackerClient
} }
@@ -16,6 +16,8 @@
package org.jetbrains.kotlin.config package org.jetbrains.kotlin.config
import org.jetbrains.kotlin.incremental.components.LookupTracker
object CommonConfigurationKeys { object CommonConfigurationKeys {
@JvmField @JvmField
val LANGUAGE_VERSION_SETTINGS = CompilerConfigurationKey<LanguageVersionSettings>("language version settings") val LANGUAGE_VERSION_SETTINGS = CompilerConfigurationKey<LanguageVersionSettings>("language version settings")
@@ -28,6 +30,9 @@ object CommonConfigurationKeys {
@JvmField @JvmField
val REPORT_OUTPUT_FILES = CompilerConfigurationKey<Boolean>("report output files") val REPORT_OUTPUT_FILES = CompilerConfigurationKey<Boolean>("report output files")
@JvmField
val LOOKUP_TRACKER = CompilerConfigurationKey.create<LookupTracker>("lookup tracker")
} }
var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings
@@ -16,10 +16,8 @@
package org.jetbrains.kotlin.load.kotlin.incremental.components package org.jetbrains.kotlin.load.kotlin.incremental.components
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.modules.TargetId
interface IncrementalCompilationComponents { interface IncrementalCompilationComponents {
fun getIncrementalCache(target: TargetId): IncrementalCache fun getIncrementalCache(target: TargetId): IncrementalCache
fun getLookupTracker(): LookupTracker
} }
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.daemon.client.CompilerCallbackServicesFacadeServer
import org.jetbrains.kotlin.daemon.client.reportFromDaemon import org.jetbrains.kotlin.daemon.client.reportFromDaemon
import org.jetbrains.kotlin.daemon.common.JpsCompilerServicesFacade import org.jetbrains.kotlin.daemon.common.JpsCompilerServicesFacade
import org.jetbrains.kotlin.daemon.common.SOCKET_ANY_FREE_PORT import org.jetbrains.kotlin.daemon.common.SOCKET_ANY_FREE_PORT
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.progress.CompilationCanceledStatus
import java.io.Serializable import java.io.Serializable
@@ -28,6 +29,7 @@ internal class JpsCompilerServicesFacadeImpl(
private val env: JpsCompilerEnvironment, private val env: JpsCompilerEnvironment,
port: Int = SOCKET_ANY_FREE_PORT port: Int = SOCKET_ANY_FREE_PORT
) : CompilerCallbackServicesFacadeServer(env.services.get(IncrementalCompilationComponents::class.java), ) : CompilerCallbackServicesFacadeServer(env.services.get(IncrementalCompilationComponents::class.java),
env.services.get(LookupTracker::class.java),
env.services.get(CompilationCanceledStatus::class.java), env.services.get(CompilationCanceledStatus::class.java),
port), port),
JpsCompilerServicesFacade { JpsCompilerServicesFacade {
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.io.FileUtil
import com.intellij.util.containers.ContainerUtil import com.intellij.util.containers.ContainerUtil
import com.intellij.util.containers.MultiMap import com.intellij.util.containers.MultiMap
import gnu.trove.THashSet import gnu.trove.THashSet
import jdk.nashorn.internal.lookup.Lookup
import org.jetbrains.jps.ModuleChunk import org.jetbrains.jps.ModuleChunk
import org.jetbrains.jps.builders.BuildTarget import org.jetbrains.jps.builders.BuildTarget
import org.jetbrains.jps.builders.DirtyFilesHolder import org.jetbrains.jps.builders.DirtyFilesHolder
@@ -459,9 +460,9 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
messageCollector: MessageCollectorAdapter messageCollector: MessageCollectorAdapter
): JpsCompilerEnvironment? { ): JpsCompilerEnvironment? {
val compilerServices = with(Services.Builder()) { val compilerServices = with(Services.Builder()) {
register(LookupTracker::class.java, lookupTracker)
register(IncrementalCompilationComponents::class.java, register(IncrementalCompilationComponents::class.java,
IncrementalCompilationComponentsImpl(incrementalCaches.mapKeys { TargetId(it.key) }, IncrementalCompilationComponentsImpl(incrementalCaches.mapKeys { TargetId(it.key) }))
lookupTracker))
register(CompilationCanceledStatus::class.java, object : CompilationCanceledStatus { register(CompilationCanceledStatus::class.java, object : CompilationCanceledStatus {
override fun checkCanceled() { override fun checkCanceled() {
if (context.cancelStatus.isCanceled) throw CompilationCanceledException() if (context.cancelStatus.isCanceled) throw CompilationCanceledException()