Always closing IncrementalCache after using. Fixed KannotatorJpsTest.
This commit is contained in:
+34
-6
@@ -55,6 +55,7 @@ import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalCache;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalCacheProvider;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalPackage;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -291,6 +292,24 @@ public class KotlinToJVMBytecodeCompiler {
|
||||
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
||||
BindingTrace sharedTrace = support.getTrace();
|
||||
ModuleDescriptorImpl sharedModule = support.getModule();
|
||||
|
||||
IncrementalCacheProvider incrementalCacheProvider = IncrementalCacheProvider.object$.getInstance();
|
||||
File incrementalCacheBaseDir = environment.getConfiguration().get(JVMConfigurationKeys.INCREMENTAL_CACHE_BASE_DIR);
|
||||
final IncrementalCache incrementalCache;
|
||||
if (incrementalCacheProvider != null && incrementalCacheBaseDir != null) {
|
||||
incrementalCache = incrementalCacheProvider.getIncrementalCache(incrementalCacheBaseDir);
|
||||
Disposer.register(environment.getApplication(), new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
incrementalCache.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
incrementalCache = null;
|
||||
}
|
||||
|
||||
|
||||
return AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
|
||||
environment.getProject(),
|
||||
environment.getSourceFiles(),
|
||||
@@ -298,7 +317,7 @@ public class KotlinToJVMBytecodeCompiler {
|
||||
Predicates.<PsiFile>alwaysTrue(),
|
||||
sharedModule,
|
||||
environment.getConfiguration().get(JVMConfigurationKeys.MODULE_IDS),
|
||||
environment.getConfiguration().get(JVMConfigurationKeys.INCREMENTAL_CACHE_BASE_DIR)
|
||||
incrementalCache
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -328,11 +347,20 @@ public class KotlinToJVMBytecodeCompiler {
|
||||
File incrementalCacheDir = configuration.get(JVMConfigurationKeys.INCREMENTAL_CACHE_BASE_DIR);
|
||||
IncrementalCacheProvider incrementalCacheProvider = IncrementalCacheProvider.object$.getInstance();
|
||||
|
||||
Collection<FqName> packagesWithRemovedFiles =
|
||||
incrementalCacheDir == null || moduleId == null || incrementalCacheProvider == null
|
||||
? null
|
||||
: IncrementalPackage.getPackagesWithRemovedFiles(
|
||||
incrementalCacheProvider.getIncrementalCache(incrementalCacheDir), moduleId, environment.getSourceFiles());
|
||||
Collection<FqName> packagesWithRemovedFiles;
|
||||
if (incrementalCacheDir == null || moduleId == null || incrementalCacheProvider == null) {
|
||||
packagesWithRemovedFiles = null;
|
||||
}
|
||||
else {
|
||||
IncrementalCache incrementalCache = incrementalCacheProvider.getIncrementalCache(incrementalCacheDir);
|
||||
try {
|
||||
packagesWithRemovedFiles = IncrementalPackage.getPackagesWithRemovedFiles(
|
||||
incrementalCache, moduleId, environment.getSourceFiles());
|
||||
}
|
||||
finally {
|
||||
incrementalCache.close();
|
||||
}
|
||||
}
|
||||
BindingTraceContext diagnosticHolder = new BindingTraceContext();
|
||||
GenerationState generationState = new GenerationState(
|
||||
environment.getProject(),
|
||||
|
||||
+2
-4
@@ -147,7 +147,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
ModuleDescriptorImpl module,
|
||||
List<String> moduleIds,
|
||||
File incrementalCacheDir
|
||||
IncrementalCache incrementalCache
|
||||
) {
|
||||
GlobalContext globalContext = ContextPackage.GlobalContext();
|
||||
TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters.create(
|
||||
@@ -162,9 +162,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
try {
|
||||
module.addFragmentProvider(DependencyKind.BINARIES, injector.getJavaDescriptorResolver().getPackageFragmentProvider());
|
||||
|
||||
IncrementalCacheProvider incrementalCacheProvider = IncrementalCacheProvider.object$.getInstance();
|
||||
if (incrementalCacheDir != null && moduleIds != null && incrementalCacheProvider != null) {
|
||||
IncrementalCache incrementalCache = incrementalCacheProvider.getIncrementalCache(incrementalCacheDir);
|
||||
if (incrementalCache != null && moduleIds != null) {
|
||||
for (String moduleId : moduleIds) {
|
||||
module.addFragmentProvider(
|
||||
DependencyKind.SOURCES,
|
||||
|
||||
+2
@@ -26,6 +26,8 @@ public trait IncrementalCache {
|
||||
public fun getRemovedPackageParts(moduleId: String, compiledSourceFilesToFqName: Map<File, String>): Collection<String>
|
||||
|
||||
public fun getPackageData(moduleId: String, fqName: String): ByteArray?
|
||||
|
||||
public fun close()
|
||||
}
|
||||
|
||||
public fun IncrementalCache.getPackagesWithRemovedFiles(moduleId: String, compiledSourceFiles: Collection<JetFile>): Collection<FqName> {
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ import java.io.File
|
||||
import java.util.ServiceLoader
|
||||
|
||||
public trait IncrementalCacheProvider {
|
||||
// IncrementalCache should be always closed after using
|
||||
public fun getIncrementalCache(baseDir: File): IncrementalCache
|
||||
|
||||
public class object {
|
||||
|
||||
@@ -110,7 +110,7 @@ public class IncrementalCacheImpl(val baseDir: File): IncrementalCache {
|
||||
return protoMap[moduleId, JvmClassName.byFqNameWithoutInnerClasses(PackageClassUtils.getPackageClassFqName(FqName(fqName)))]
|
||||
}
|
||||
|
||||
public fun close() {
|
||||
public override fun close() {
|
||||
protoMap.close()
|
||||
constantsMap.close()
|
||||
inlineFunctionsMap.close()
|
||||
|
||||
Reference in New Issue
Block a user