From 4f8908c3295ee6ec3e8f72f8851d96a7acb244db Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Tue, 2 May 2017 12:59:28 +0300 Subject: [PATCH] Remove old IC: remove unnecessary caches Original commit: 62fdd91947948e3ded7672eefc1fb6efa32bd7b5 --- .../kotlin/jps/build/KotlinBuilder.kt | 1 - .../incremental/JpsIncrementalCacheImpl.kt | 88 ------------------- 2 files changed, 89 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index c9879c12a80..1568b9ffe45 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -309,7 +309,6 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { } changesInfo.processChangesUsingLookups(filesToCompile.values().toSet(), dataManager, fsOperations, incrementalCaches.values) - incrementalCaches.values.forEach { it.cleanDirtyInlineFunctions() } return OK } diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/JpsIncrementalCacheImpl.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/JpsIncrementalCacheImpl.kt index 4e5a7762685..ca7990987f7 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/JpsIncrementalCacheImpl.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/JpsIncrementalCacheImpl.kt @@ -16,110 +16,22 @@ package org.jetbrains.kotlin.jps.incremental -import com.intellij.openapi.util.io.FileUtil -import gnu.trove.THashSet import org.jetbrains.jps.builders.storage.BuildDataPaths import org.jetbrains.jps.builders.storage.StorageProvider import org.jetbrains.jps.incremental.ModuleBuildTarget import org.jetbrains.jps.incremental.storage.BuildDataManager import org.jetbrains.jps.incremental.storage.StorageOwner -import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.incremental.IncrementalCacheImpl -import org.jetbrains.kotlin.incremental.dumpCollection -import org.jetbrains.kotlin.incremental.storage.BasicMap -import org.jetbrains.kotlin.incremental.storage.BasicStringMap -import org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer import org.jetbrains.kotlin.jps.build.KotlinBuilder -import org.jetbrains.kotlin.jps.incremental.storages.PathCollectionExternalizer -import org.jetbrains.kotlin.jps.incremental.storages.PathFunctionPair -import org.jetbrains.kotlin.jps.incremental.storages.PathFunctionPairKeyDescriptor -import org.jetbrains.kotlin.resolve.jvm.JvmClassName import java.io.File class JpsIncrementalCacheImpl( target: ModuleBuildTarget, paths: BuildDataPaths ) : IncrementalCacheImpl(paths.getTargetDataRoot(target), target.outputDir, target), StorageOwner { - - private val dirtyInlineFunctionsMap = registerMap(DirtyInlineFunctionsMap(DIRTY_INLINE_FUNCTIONS.storageFile)) - private val inlinedTo = registerMap(InlineFunctionsFilesMap(INLINED_TO.storageFile)) - - override fun registerInline(fromPath: String, jvmSignature: String, toPath: String) { - if (!IncrementalCompilation.isEnabled()) { - inlinedTo.add(fromPath, jvmSignature, toPath) - } - } - override fun debugLog(message: String) { KotlinBuilder.LOG.debug(message) } - - fun getFilesToReinline(): Collection { - val result = THashSet(FileUtil.PATH_HASHING_STRATEGY) - - for ((className, functions) in dirtyInlineFunctionsMap.getEntries()) { - val classFilePath = getClassFilePath(className.internalName) - - for (cache in thisWithDependentCaches) { - val targetFiles = functions.flatMap { (cache as JpsIncrementalCacheImpl).inlinedTo[classFilePath, it] } - result.addAll(targetFiles) - } - } - - return result.map(::File) - } - - fun cleanDirtyInlineFunctions() { - dirtyInlineFunctionsMap.clean() - } - - override fun processChangedInlineFunctions(className: JvmClassName, changedFunctions: Collection) { - if (changedFunctions.isNotEmpty()) { - dirtyInlineFunctionsMap.put(className, changedFunctions.toList()) - } - } - - private inner class DirtyInlineFunctionsMap(storageFile: File) : BasicStringMap>(storageFile, StringCollectionExternalizer) { - fun getEntries(): Map> = - storage.keys.associateBy(JvmClassName::byInternalName) { storage[it]!! } - - fun put(className: JvmClassName, changedFunctions: List) { - storage[className.internalName] = changedFunctions - } - - override fun dumpValue(value: Collection) = value.dumpCollection() - } - - /** - * Mapping: (sourceFile+inlineFunction)->(targetFiles) - * - * Where: - * * sourceFile - path to some kotlin source - * * inlineFunction - jvmSignature of some inline function in source file - * * target files - collection of files inlineFunction has been inlined to - */ - private inner class InlineFunctionsFilesMap(storageFile: File) : BasicMap>(storageFile, PathFunctionPairKeyDescriptor, PathCollectionExternalizer) { - fun add(sourcePath: String, jvmSignature: String, targetPath: String) { - val key = PathFunctionPair(sourcePath, jvmSignature) - storage.append(key, targetPath) - } - - operator fun get(sourcePath: String, jvmSignature: String): Collection { - val key = PathFunctionPair(sourcePath, jvmSignature) - return storage[key] ?: emptySet() - } - - override fun dumpKey(key: PathFunctionPair): String = - "(${key.path}, ${key.function})" - - override fun dumpValue(value: Collection) = - value.dumpCollection() - } - - companion object { - private val DIRTY_INLINE_FUNCTIONS = "dirty-inline-functions" - private val INLINED_TO = "inlined-to" - } } private class KotlinIncrementalStorageProvider(