From c26a7dfd29798ecbf1a1c2a7802b0739f2ebd47e Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 16 Oct 2015 20:03:31 +0300 Subject: [PATCH] Drop package facades: - incremental cache impl should not depend on package facades - fix trivial incremental compilation tests TODO: inlines DO NOT WORK with incremental compilation Original commit: c55106a325e12118c4834ed4142b824d936c5210 --- .../jps/incremental/CacheFormatVersion.kt | 2 +- .../jps/incremental/IncrementalCacheImpl.kt | 31 +++++-------------- .../module1Modified/build.log | 3 -- .../module2Modified/build.log | 2 -- .../moduleWithConstantModified/build.log | 1 - .../moduleWithInlineModified/build.log | 1 - .../cacheVersionChanged/touchedFile/build.log | 2 -- .../untouchedFiles/build.log | 1 - 8 files changed, 9 insertions(+), 34 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt index ab82093d5cb..d68f4babfd0 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/CacheFormatVersion.kt @@ -25,7 +25,7 @@ import java.io.File class CacheFormatVersion(targetDataRoot: File) { companion object { // Change this when incremental cache format changes - private val INCREMENTAL_CACHE_OWN_VERSION = 6 + private val INCREMENTAL_CACHE_OWN_VERSION = 7 private val CACHE_FORMAT_VERSION = INCREMENTAL_CACHE_OWN_VERSION * 1000000 + diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt index 5973ba0c983..6c8b73f7535 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt @@ -67,11 +67,9 @@ public class IncrementalCacheImpl( val PROTO_MAP = "proto" val CONSTANTS_MAP = "constants" val INLINE_FUNCTIONS = "inline-functions" - val PACKAGE_PARTS = "package-parts" val MULTIFILE_CLASS_FACADES = "multifile-class-facades" val MULTIFILE_CLASS_PARTS = "multifile-class-parts" val SOURCE_TO_CLASSES = "source-to-classes" - val CLASS_TO_SOURCES = "class-to-sources" val DIRTY_OUTPUT_CLASSES = "dirty-output-classes" val DIRTY_INLINE_FUNCTIONS = "dirty-inline-functions" val INLINED_TO = "inlined-to" @@ -93,7 +91,6 @@ public class IncrementalCacheImpl( private val protoMap = registerMap(ProtoMap(PROTO_MAP.storageFile)) private val constantsMap = registerMap(ConstantsMap(CONSTANTS_MAP.storageFile)) private val inlineFunctionsMap = registerMap(InlineFunctionsMap(INLINE_FUNCTIONS.storageFile)) - private val packagePartMap = registerMap(PackagePartMap(PACKAGE_PARTS.storageFile)) private val multifileClassFacadeMap = registerMap(MultifileClassFacadeMap(MULTIFILE_CLASS_FACADES.storageFile)) private val multifileClassPartMap = registerMap(MultifileClassPartMap(MULTIFILE_CLASS_PARTS.storageFile)) private val sourceToClassesMap = registerMap(SourceToClassesMap(SOURCE_TO_CLASSES.storageFile)) @@ -134,17 +131,7 @@ public class IncrementalCacheImpl( val result = THashSet(FileUtil.PATH_HASHING_STRATEGY) for ((className, functions) in dirtyInlineFunctionsMap.getEntries()) { - val internalName = - if (packagePartMap.isPackagePart(className)) { - val packageInternalName = PackageClassUtils.getPackageClassInternalName(className.packageFqName) - val packageJvmName = JvmClassName.byInternalName(packageInternalName) - packageJvmName.internalName - } - else { - className.internalName - } - - val classFilePath = getClassFilePath(internalName) + val classFilePath = getClassFilePath(className.internalName) fun addFilesAffectedByChangedInlineFuns(cache: IncrementalCacheImpl) { val targetFiles = functions.flatMap { cache.inlinedTo[classFilePath, it] } @@ -190,8 +177,7 @@ public class IncrementalCacheImpl( header.isCompatiblePackageFacadeKind() -> protoMap.process(kotlinClass, isPackage = true) header.isCompatibleFileFacadeKind() -> { - assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" } - packagePartMap.addPackagePart(className) + assert(sourceFiles.size == 1) { "Package part from several source files: $sourceFiles" } protoMap.process(kotlinClass, isPackage = true) + constantsMap.process(kotlinClass) + @@ -207,8 +193,7 @@ public class IncrementalCacheImpl( inlineFunctionsMap.process(kotlinClass) } header.isCompatibleMultifileClassPartKind() -> { - assert(sourceFiles.size() == 1) { "Multifile class part from several source files: $sourceFiles" } - packagePartMap.addPackagePart(className) + assert(sourceFiles.size == 1) { "Multifile class part from several source files: $sourceFiles" } multifileClassPartMap.add(className.internalName, header.multifileClassName!!) protoMap.process(kotlinClass, isPackage = true) + @@ -248,7 +233,6 @@ public class IncrementalCacheImpl( dirtyClasses.forEach { protoMap.remove(it) - packagePartMap.remove(it) multifileClassFacadeMap.remove(it) multifileClassPartMap.remove(it) constantsMap.remove(it) @@ -259,10 +243,11 @@ public class IncrementalCacheImpl( } override fun getObsoletePackageParts(): Collection { - val obsoletePackageParts = - dirtyOutputClassesMap.getDirtyOutputClasses().filter { packagePartMap.isPackagePart(JvmClassName.byInternalName(it)) } - KotlinBuilder.LOG.debug("Obsolete package parts: ${obsoletePackageParts}") - return obsoletePackageParts + return emptyList() +// val obsoletePackageParts = +// dirtyOutputClassesMap.getDirtyOutputClasses().filter { packagePartMap.isPackagePart(JvmClassName.byInternalName(it)) } +// KotlinBuilder.LOG.debug("Obsolete package parts: ${obsoletePackageParts}") +// return obsoletePackageParts } override fun getPackagePartData(fqName: String): JvmPackagePartProto? { diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log index 784f8dd8873..ae0d40bb5e6 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log @@ -7,7 +7,6 @@ End of files Cleaning output files: out/production/module1/META-INF/module1.kotlin_module out/production/module1/module1/A.class -out/production/module1/module1/Module1Package.class out/production/module1/module1/Module1_aKt.class End of files Compiling files: @@ -15,7 +14,6 @@ module1/src/module1_a.kt End of files Cleaning output files: out/production/module2/META-INF/module2.kotlin_module -out/production/module2/module2/Module2Package.class out/production/module2/module2/Module2_bKt.class End of files Compiling files: @@ -23,7 +21,6 @@ module2/src/module2_b.kt End of files Cleaning output files: out/production/module3/META-INF/module3.kotlin_module -out/production/module3/module3/Module3Package.class out/production/module3/module3/Module3_cKt.class End of files Compiling files: diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log index 8c069b7fa2d..c1dd95e8e3a 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log @@ -1,7 +1,6 @@ Cleaning output files: out/production/module1/META-INF/module1.kotlin_module out/production/module1/module1/A.class -out/production/module1/module1/Module1Package.class out/production/module1/module1/Module1_aKt.class End of files Compiling files: @@ -9,7 +8,6 @@ module1/src/module1_a.kt End of files Cleaning output files: out/production/module2/META-INF/module2.kotlin_module -out/production/module2/module2/Module2Package.class out/production/module2/module2/Module2_bKt.class End of files Compiling files: diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log index 96b3e5069a8..07ee39331d0 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log @@ -1,6 +1,5 @@ Cleaning output files: out/production/module1/META-INF/module1.kotlin_module -out/production/module1/a/APackage.class out/production/module1/a/Module1_AKt.class End of files Compiling files: diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log index 35f17a0b6cc..679e1ce6888 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log @@ -1,7 +1,6 @@ Cleaning output files: out/production/module1/META-INF/module1.kotlin_module out/production/module1/a/A.class -out/production/module1/a/APackage.class out/production/module1/a/Module1_AKt.class End of files Compiling files: diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log index b8a67cc5ad0..84c1b712769 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log @@ -1,11 +1,9 @@ Cleaning output files: out/production/module/META-INF/module.kotlin_module out/production/module/test/BKt.class -out/production/module/test/TestPackage.class End of files Cleaning output files: out/production/module/other/OtherKt.class -out/production/module/other/OtherPackage.class out/production/module/test/AKt.class End of files Compiling files: diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log index 133a92b78d7..47ee1d1126c 100644 --- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log +++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log @@ -2,7 +2,6 @@ Cleaning output files: out/production/module/META-INF/module.kotlin_module out/production/module/test/AKt.class out/production/module/test/BKt.class -out/production/module/test/TestPackage.class End of files Compiling files: src/a.kt