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()
+}