diff --git a/compiler/rmi/kotlinr/kotlinr.iml b/compiler/rmi/kotlinr/kotlinr.iml index 36eff60cdf2..ec2851d6574 100644 --- a/compiler/rmi/kotlinr/kotlinr.iml +++ b/compiler/rmi/kotlinr/kotlinr.iml @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/KotlinCompilerClient.kt b/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/KotlinCompilerClient.kt index 1850cafdaa6..b4fb94432ff 100644 --- a/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/KotlinCompilerClient.kt +++ b/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/KotlinCompilerClient.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.rmi.kotlinr import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.modules.Module import org.jetbrains.kotlin.rmi.* import java.io.File import java.io.OutputStream @@ -175,10 +176,10 @@ public class KotlinCompilerClient { } } - public fun incrementalCompile(compiler: CompileService, args: Array, caches: Map, out: OutputStream): Int { + public fun incrementalCompile(compiler: CompileService, args: Array, caches: Map, out: OutputStream): Int { val outStrm = RemoteOutputStreamServer(out) - val cacheServers = hashMapOf() + val cacheServers = hashMapOf() try { caches.mapValuesTo(cacheServers, { RemoteIncrementalCacheServer( it.getValue()) }) return compiler.remoteIncrementalCompile(args, cacheServers, outStrm, CompileService.OutputFormat.XML) diff --git a/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/RemoteIncrementalCacheServer.kt b/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/RemoteIncrementalCacheServer.kt index 4c3de63fccb..b995499ddb3 100644 --- a/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/RemoteIncrementalCacheServer.kt +++ b/compiler/rmi/kotlinr/src/org/jetbrains/kotlin/rmi/kotlinr/RemoteIncrementalCacheServer.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.rmi.kotlinr import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.load.kotlin.incremental.components.InlineRegistering import org.jetbrains.kotlin.rmi.CompileService import java.rmi.server.UnicastRemoteObject @@ -33,6 +34,10 @@ public class RemoteIncrementalCacheServer(val cache: IncrementalCache) : Compile override fun getModuleMappingData(): ByteArray? = cache.getModuleMappingData() + override fun getInlineRegistering(): InlineRegistering = cache.getInlineRegistering() + + override fun getClassFilePath(internalClassName: String): String = cache.getClassFilePath(internalClassName) + override fun close() { cache.close() } diff --git a/compiler/rmi/rmi-interface/rmi-interface.iml b/compiler/rmi/rmi-interface/rmi-interface.iml index 50c2d073f1a..3897dc90e82 100644 --- a/compiler/rmi/rmi-interface/rmi-interface.iml +++ b/compiler/rmi/rmi-interface/rmi-interface.iml @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompileService.kt b/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompileService.kt index 8316e18b5ee..bc486fd45d3 100644 --- a/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompileService.kt +++ b/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompileService.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.rmi +import org.jetbrains.kotlin.load.kotlin.incremental.components.InlineRegistering +import org.jetbrains.kotlin.modules.Module import java.rmi.Remote import java.rmi.RemoteException @@ -36,6 +38,12 @@ public interface CompileService : Remote { throws(RemoteException::class) public fun getModuleMappingData(): ByteArray? + throws(RemoteException::class) + public fun getInlineRegistering(): InlineRegistering + + throws(RemoteException::class) + fun getClassFilePath(internalClassName: String): String + throws(RemoteException::class) public fun close() } @@ -55,7 +63,7 @@ public interface CompileService : Remote { throws(RemoteException::class) public fun remoteIncrementalCompile( args: Array, - caches: Map, + caches: Map, outputStream: RemoteOutputStream, outputFormat: OutputFormat): Int } diff --git a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServiceImpl.kt b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServiceImpl.kt index 797a6e7cb5c..145dbcbbdd0 100644 --- a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServiceImpl.kt +++ b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServiceImpl.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.config.Services 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.Module import org.jetbrains.kotlin.rmi.* import org.jetbrains.kotlin.rmi.service.RemoteIncrementalCacheClient import org.jetbrains.kotlin.rmi.service.RemoteOutputStreamClient @@ -80,14 +81,14 @@ class CompileServiceImpl>( alive = true } - public class IncrementalCompilationComponentsImpl(val idToCache: Map): IncrementalCompilationComponents { + public class IncrementalCompilationComponentsImpl(val targetToCache: Map): IncrementalCompilationComponents { // perf: cheap object, but still the pattern may be costly if there are too many calls to cache with the same id (which seems not to be the case now) - override fun getIncrementalCache(moduleId: String): IncrementalCache = RemoteIncrementalCacheClient(idToCache[moduleId]!!) + override fun getIncrementalCache(target: Module): IncrementalCache = RemoteIncrementalCacheClient(targetToCache[target]!!) // TODO: add appropriate proxy into interaction when lookup tracker is needed override fun getLookupTracker(): LookupTracker = LookupTracker.DO_NOTHING } - private fun createCompileServices(incrementalCaches: Map): Services = + private fun createCompileServices(incrementalCaches: Map): Services = Services.Builder() .register(IncrementalCompilationComponents::class.java, IncrementalCompilationComponentsImpl(incrementalCaches)) // TODO: add remote proxy for cancellation status tracking @@ -186,7 +187,7 @@ class CompileServiceImpl>( } } - override fun remoteIncrementalCompile(args: Array, caches: Map, outputStream: RemoteOutputStream, outputFormat: CompileService.OutputFormat): Int = + override fun remoteIncrementalCompile(args: Array, caches: Map, outputStream: RemoteOutputStream, outputFormat: CompileService.OutputFormat): Int = doCompile(args, outputStream) { printStream -> when (outputFormat) { CompileService.OutputFormat.PLAIN -> throw NotImplementedError("Only XML output is supported in remote incremental compilation") diff --git a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt index 29d6e952f46..c358fa9a280 100644 --- a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt +++ b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt @@ -17,14 +17,19 @@ package org.jetbrains.kotlin.rmi.service import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.load.kotlin.incremental.components.InlineRegistering import org.jetbrains.kotlin.rmi.CompileService public class RemoteIncrementalCacheClient(val cache: CompileService.RemoteIncrementalCache): IncrementalCache { + override fun getInlineRegistering(): InlineRegistering = cache.getInlineRegistering() + override fun getObsoletePackageParts(): Collection = cache.getObsoletePackageParts() override fun getPackagePartData(fqName: String): ByteArray? = cache.getPackagePartData(fqName) override fun getModuleMappingData(): ByteArray? = cache.getModuleMappingData() + override fun getClassFilePath(internalClassName: String): String = cache.getClassFilePath(internalClassName) + override fun close(): Unit = cache.close() } diff --git a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.java b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.java index 3f62f14e35b..3a6d6c023e2 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.java +++ b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.java @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector; import org.jetbrains.kotlin.cli.common.messages.MessageCollectorUtil; import org.jetbrains.kotlin.config.CompilerSettings; import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache; +import org.jetbrains.kotlin.modules.Module; import org.jetbrains.kotlin.rmi.*; import org.jetbrains.kotlin.rmi.kotlinr.KotlinCompilerClient; import org.jetbrains.kotlin.utils.UtilsPackage; @@ -58,7 +59,7 @@ public class KotlinCompilerRunner { CompilerSettings compilerSettings, MessageCollector messageCollector, CompilerEnvironment environment, - Map incrementalCaches, + Map incrementalCaches, File moduleFile, OutputItemsCollector collector ) { @@ -75,7 +76,7 @@ public class KotlinCompilerRunner { @NotNull CompilerSettings compilerSettings, @NotNull MessageCollector messageCollector, @NotNull CompilerEnvironment environment, - Map incrementalCaches, + Map incrementalCaches, @NotNull OutputItemsCollector collector, @NotNull Collection sourceFiles, @NotNull List libraryFiles, @@ -95,7 +96,7 @@ public class KotlinCompilerRunner { MessageCollector messageCollector, OutputItemsCollector collector, CompilerEnvironment environment, - Map incrementalCaches + Map incrementalCaches ) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); PrintStream out = new PrintStream(stream); @@ -116,7 +117,7 @@ public class KotlinCompilerRunner { CommonCompilerArguments arguments, String additionalArguments, CompilerEnvironment environment, - Map incrementalCaches, + Map incrementalCaches, PrintStream out, MessageCollector messageCollector ) { 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 3d2f6fa6b84..81ba0203fd5 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -62,6 +62,7 @@ import org.jetbrains.kotlin.load.kotlin.PackageClassUtils import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents +import org.jetbrains.kotlin.modules.Module import org.jetbrains.kotlin.progress.CompilationCanceledException import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.resolve.jvm.JvmClassName @@ -319,7 +320,8 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR } return compileToJvm(allCompiledFiles, chunk, commonArguments, context, dirtyFilesHolder, environment, - incrementalCaches.mapKeysTo(HashMap(incrementalCaches.size()), { it.getKey().id }), + incrementalCaches.mapKeysTo(HashMap(incrementalCaches.size()), + { ModuleToModuleBuildTargetAdapter(it.getKey()) }), filesToCompile, messageCollector) } @@ -486,7 +488,7 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR private fun compileToJs(chunk: ModuleChunk, commonArguments: CommonCompilerArguments, environment: CompilerEnvironment, - incrementalCaches: MutableMap?, + incrementalCaches: MutableMap?, messageCollector: MessageCollectorAdapter, project: JpsProject ): OutputItemsCollectorImpl? { val outputItemCollector = OutputItemsCollectorImpl() @@ -541,7 +543,7 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR context: CompileContext, dirtyFilesHolder: DirtyFilesHolder, environment: CompilerEnvironment, - incrementalCaches: MutableMap?, + incrementalCaches: MutableMap?, filesToCompile: MultiMap, messageCollector: MessageCollectorAdapter ): OutputItemsCollectorImpl? { val outputItemCollector = OutputItemsCollectorImpl() diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCompilationComponentsImpl.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCompilationComponentsImpl.kt index e4ff9a9da86..850d9646f41 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCompilationComponentsImpl.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCompilationComponentsImpl.kt @@ -34,7 +34,7 @@ public class IncrementalCompilationComponentsImpl( override fun getLookupTracker(): LookupTracker = lookupTracker } -private class ModuleToModuleBuildTargetAdapter( +public class ModuleToModuleBuildTargetAdapter( private val moduleBuildTarget: ModuleBuildTarget ) : Module {