From 33cead12e0dc73e0593f9a516f3793d047a3c621 Mon Sep 17 00:00:00 2001 From: ligee Date: Wed, 12 Aug 2015 14:56:31 +0200 Subject: [PATCH] working version of jps-plugin integration with daemon --- .idea/artifacts/KotlinJpsPlugin.xml | 2 ++ .../jetbrains/kotlin/rmi/CompilerFacade.java | 10 +++++-- .../kotlin/rmi/service/CompileServer.kt | 1 + .../kotlin/rmi/service/CompilerFacadeImpl.kt | 11 +++++--- .../service/RemoteIncrementalCacheClient.kt | 28 +++++++++++++++++++ 5 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt diff --git a/.idea/artifacts/KotlinJpsPlugin.xml b/.idea/artifacts/KotlinJpsPlugin.xml index c48f2a07a6f..7e9ed15d83a 100644 --- a/.idea/artifacts/KotlinJpsPlugin.xml +++ b/.idea/artifacts/KotlinJpsPlugin.xml @@ -19,6 +19,8 @@ + + \ No newline at end of file diff --git a/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompilerFacade.java b/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompilerFacade.java index 9401cd62316..adc151039fa 100644 --- a/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompilerFacade.java +++ b/compiler/rmi/rmi-interface/src/org/jetbrains/kotlin/rmi/CompilerFacade.java @@ -16,9 +16,9 @@ package org.jetbrains.kotlin.rmi; -import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache; import java.rmi.Remote; import java.rmi.RemoteException; +import java.util.Collection; import java.util.Map; @@ -29,7 +29,13 @@ public interface CompilerFacade extends Remote { XML } - interface RemoteIncrementalCache extends Remote, IncrementalCache {} + interface RemoteIncrementalCache extends Remote { + Collection getObsoletePackageParts() throws RemoteException;; + + byte[] getPackageData(String fqName) throws RemoteException;; + + void close() throws RemoteException; + } int remoteCompile(String[] args, RemoteOutputStream errStream, OutputFormat outputFormat) throws RemoteException; diff --git a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServer.kt b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServer.kt index 1b2f1c6bf58..f90f76485a7 100644 --- a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServer.kt +++ b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompileServer.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.rmi.service import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.rmi.CompilerFacade +import org.jetbrains.kotlin.service.CompilerFacadeImpl import java.rmi.RMISecurityManager import java.rmi.registry.LocateRegistry import java.rmi.server.UnicastRemoteObject diff --git a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompilerFacadeImpl.kt b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompilerFacadeImpl.kt index 63bab51e845..156c409242b 100644 --- a/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompilerFacadeImpl.kt +++ b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/CompilerFacadeImpl.kt @@ -14,15 +14,17 @@ * limitations under the License. */ -package org.jetbrains.kotlin.rmi.service +package org.jetbrains.kotlin.service import org.jetbrains.kotlin.cli.common.CLICompiler import org.jetbrains.kotlin.config.Services -import org.jetbrains.kotlin.incremental.components.UsageCollector +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.rmi.CompilerFacade import org.jetbrains.kotlin.rmi.RemoteOutputStream +import org.jetbrains.kotlin.rmi.service.RemoteIncrementalCacheClient +import org.jetbrains.kotlin.rmi.service.RemoteOutputStreamClient import java.io.PrintStream import java.rmi.server.UnicastRemoteObject import java.util.concurrent.TimeUnit @@ -31,8 +33,9 @@ import java.util.concurrent.TimeUnit class CompilerFacadeImpl>(val compiler: Compiler) : CompilerFacade, UnicastRemoteObject() { public class IncrementalCompilationComponentsImpl(val idToCache: Map): IncrementalCompilationComponents { - override fun getIncrementalCache(moduleId: String): IncrementalCache = idToCache[moduleId]!! - override fun getUsageCollector(): UsageCollector = UsageCollector.DO_NOTHING + // perf: cheap object, but still the pattern may be costy 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 getLookupTracker(): LookupTracker = LookupTracker.DO_NOTHING } private fun createCompileServices(incrementalCaches: Map): Services = 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 new file mode 100644 index 00000000000..990a1c0885a --- /dev/null +++ b/compiler/rmi/rmi-server/src/org/jetbrains/kotlin/rmi/service/RemoteIncrementalCacheClient.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.rmi.service + +import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.rmi.CompilerFacade + +public class RemoteIncrementalCacheClient(val cache: CompilerFacade.RemoteIncrementalCache): IncrementalCache { + override fun getObsoletePackageParts(): Collection = cache.getObsoletePackageParts() + + override fun getPackageData(fqName: String): ByteArray = cache.getPackageData(fqName) + + override fun close(): Unit = cache.close() +}