From bb2fab5b5df76528241872f33eaea795bf949b78 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Mon, 31 Jul 2017 14:28:59 +0300 Subject: [PATCH] Extract LookupTracker service from IncrementalCompilationComponents We don't need a `TargetId` to `IncrementalCache` mapping in JS --- .../IncrementalCompilationComponentsImpl.kt | 6 +----- .../src/org/jetbrains/kotlin/incremental/buildUtil.kt | 4 ++-- .../src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt | 10 +++++++--- .../cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt | 2 +- .../client/CompilerCallbackServicesFacadeServer.kt | 7 ++++--- .../kotlin/daemon/client/KotlinCompilerClient.kt | 3 +++ .../RemoteIncrementalCompilationComponentsClient.kt | 6 ------ .../jetbrains/kotlin/config/CommonConfigurationKeys.kt | 5 +++++ .../components/IncrementalCompilationComponents.kt | 2 -- .../compilerRunner/JpsCompilerServicesFacadeImpl.kt | 2 ++ .../org/jetbrains/kotlin/jps/build/KotlinBuilder.kt | 5 +++-- 11 files changed, 28 insertions(+), 24 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt index 80fd85a86c5..2411ebae5a8 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalCompilationComponentsImpl.kt @@ -16,17 +16,13 @@ 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.IncrementalCompilationComponents import org.jetbrains.kotlin.modules.TargetId class IncrementalCompilationComponentsImpl( - private val caches: Map, - private val lookupTracker: LookupTracker + private val caches: Map ): IncrementalCompilationComponents { override fun getIncrementalCache(target: TargetId): IncrementalCache = caches[target] ?: throw Exception("Incremental cache for target ${target.name} not found") - - override fun getLookupTracker(): LookupTracker = lookupTracker } diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index 6a7fd4c3ea4..fd83e104fa5 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -70,8 +70,8 @@ fun makeCompileServices( compilationCanceledStatus: CompilationCanceledStatus? ): Services = with(Services.Builder()) { - register(IncrementalCompilationComponents::class.java, - IncrementalCompilationComponentsImpl(incrementalCaches, lookupTracker)) + register(LookupTracker::class.java, lookupTracker) + register(IncrementalCompilationComponents::class.java, IncrementalCompilationComponentsImpl(incrementalCaches)) compilationCanceledStatus?.let { register(CompilationCanceledStatus::class.java, it) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index 770ef32faaa..d156f75b44d 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.PluginCliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.cliPluginUsageString import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.javac.JavacWrapper import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents @@ -288,9 +289,12 @@ class K2JVMCompiler : CLICompiler() { configuration: CompilerConfiguration, arguments: K2JVMCompilerArguments, services: Services ) { if (IncrementalCompilation.isEnabled()) { - val components = services.get(IncrementalCompilationComponents::class.java) - if (components != null) { - configuration.put(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS, components) + services.get(LookupTracker::class.java)?.let { + configuration.put(CommonConfigurationKeys.LOOKUP_TRACKER, it) + } + + services.get(IncrementalCompilationComponents::class.java)?.let { + configuration.put(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS, it) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt index 68d09109295..dbcb05c779e 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt @@ -131,7 +131,7 @@ object TopDownAnalyzerFacadeForJVM { val module = moduleContext.module 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 separateModules = !configuration.getBoolean(JVMConfigurationKeys.USE_SINGLE_MODULE) diff --git a/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/CompilerCallbackServicesFacadeServer.kt b/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/CompilerCallbackServicesFacadeServer.kt index 64bad93651b..976c3dd47b7 100644 --- a/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/CompilerCallbackServicesFacadeServer.kt +++ b/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/CompilerCallbackServicesFacadeServer.kt @@ -33,6 +33,7 @@ import kotlin.reflect.full.allSuperclasses open class CompilerCallbackServicesFacadeServer( val incrementalCompilationComponents: IncrementalCompilationComponents? = null, + val lookupTracker: LookupTracker? = null, val compilationCanceledStatus: CompilationCanceledStatus? = null, port: Int = SOCKET_ANY_FREE_PORT ) : CompilerCallbackServicesFacade, @@ -66,17 +67,17 @@ open class CompilerCallbackServicesFacadeServer( incrementalCompilationComponents!!.getIncrementalCache(target).close() } - override fun lookupTracker_requiresPosition() = incrementalCompilationComponents!!.getLookupTracker().requiresPosition + override fun lookupTracker_requiresPosition() = lookupTracker!!.requiresPosition override fun lookupTracker_record(lookups: Collection) { - val lookupTracker = incrementalCompilationComponents!!.getLookupTracker() + val lookupTracker = lookupTracker!! for (it in lookups) { 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 diff --git a/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/KotlinCompilerClient.kt b/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/KotlinCompilerClient.kt index e95ec9d1961..c5421ee327d 100644 --- a/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/KotlinCompilerClient.kt +++ b/compiler/daemon/daemon-client/src/org/jetbrains/kotlin/daemon/client/KotlinCompilerClient.kt @@ -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.MessageCollector 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.progress.CompilationCanceledStatus import java.io.File @@ -35,6 +36,7 @@ import kotlin.concurrent.thread class CompilationServices( val incrementalCompilationComponents: IncrementalCompilationComponents? = null, + val lookupTracker: LookupTracker? = null, val compilationCanceledStatus: CompilationCanceledStatus? = null ) @@ -170,6 +172,7 @@ object KotlinCompilerClient { targetPlatform, args, CompilerCallbackServicesFacadeServer(incrementalCompilationComponents = callbackServices.incrementalCompilationComponents, + lookupTracker = callbackServices.lookupTracker, compilationCanceledStatus = callbackServices.compilationCanceledStatus, port = port), RemoteOutputStreamServer(compilerOut, port), diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt index 650578e769d..99c224182b0 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/RemoteIncrementalCompilationComponentsClient.kt @@ -16,7 +16,6 @@ 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.IncrementalCompilationComponents 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.Profiler - 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 getLookupTracker(): LookupTracker = remoteLookupTrackerClient } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt index a4d50eeb9ed..3c8461ee98b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.config +import org.jetbrains.kotlin.incremental.components.LookupTracker + object CommonConfigurationKeys { @JvmField val LANGUAGE_VERSION_SETTINGS = CompilerConfigurationKey("language version settings") @@ -28,6 +30,9 @@ object CommonConfigurationKeys { @JvmField val REPORT_OUTPUT_FILES = CompilerConfigurationKey("report output files") + + @JvmField + val LOOKUP_TRACKER = CompilerConfigurationKey.create("lookup tracker") } var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings diff --git a/compiler/util/src/org/jetbrains/kotlin/load/kotlin/incremental/components/IncrementalCompilationComponents.kt b/compiler/util/src/org/jetbrains/kotlin/load/kotlin/incremental/components/IncrementalCompilationComponents.kt index 3fafb3802fa..cb35c120df9 100644 --- a/compiler/util/src/org/jetbrains/kotlin/load/kotlin/incremental/components/IncrementalCompilationComponents.kt +++ b/compiler/util/src/org/jetbrains/kotlin/load/kotlin/incremental/components/IncrementalCompilationComponents.kt @@ -16,10 +16,8 @@ package org.jetbrains.kotlin.load.kotlin.incremental.components -import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.modules.TargetId interface IncrementalCompilationComponents { fun getIncrementalCache(target: TargetId): IncrementalCache - fun getLookupTracker(): LookupTracker } diff --git a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsCompilerServicesFacadeImpl.kt b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsCompilerServicesFacadeImpl.kt index 3410543678a..6dd63e7bb5c 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsCompilerServicesFacadeImpl.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsCompilerServicesFacadeImpl.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.daemon.client.CompilerCallbackServicesFacadeServer import org.jetbrains.kotlin.daemon.client.reportFromDaemon import org.jetbrains.kotlin.daemon.common.JpsCompilerServicesFacade 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.progress.CompilationCanceledStatus import java.io.Serializable @@ -28,6 +29,7 @@ internal class JpsCompilerServicesFacadeImpl( private val env: JpsCompilerEnvironment, port: Int = SOCKET_ANY_FREE_PORT ) : CompilerCallbackServicesFacadeServer(env.services.get(IncrementalCompilationComponents::class.java), + env.services.get(LookupTracker::class.java), env.services.get(CompilationCanceledStatus::class.java), port), JpsCompilerServicesFacade { diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index fba0d50aa9f..d8eafe29cfa 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.util.io.FileUtil import com.intellij.util.containers.ContainerUtil import com.intellij.util.containers.MultiMap import gnu.trove.THashSet +import jdk.nashorn.internal.lookup.Lookup import org.jetbrains.jps.ModuleChunk import org.jetbrains.jps.builders.BuildTarget import org.jetbrains.jps.builders.DirtyFilesHolder @@ -459,9 +460,9 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { messageCollector: MessageCollectorAdapter ): JpsCompilerEnvironment? { val compilerServices = with(Services.Builder()) { + register(LookupTracker::class.java, lookupTracker) register(IncrementalCompilationComponents::class.java, - IncrementalCompilationComponentsImpl(incrementalCaches.mapKeys { TargetId(it.key) }, - lookupTracker)) + IncrementalCompilationComponentsImpl(incrementalCaches.mapKeys { TargetId(it.key) })) register(CompilationCanceledStatus::class.java, object : CompilationCanceledStatus { override fun checkCanceled() { if (context.cancelStatus.isCanceled) throw CompilationCanceledException()