From d266f49c7cb83b42a0184fa070a783a5c17d540c Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Tue, 28 Mar 2023 16:01:57 +0200 Subject: [PATCH] [LL FIR] KTIJ-25096 Add option to exclude binaries when incrementing modification trackers - In performance tests, modification trackers were incorrectly incremented between tests for binary modules even with library caches enabled. The new option `includeBinaryTrackers` can be used by performance tests to exclude binary modules. --- .../providers/KotlinModificationTrackerFactory.kt | 7 +++++-- .../impl/KotlinStaticModificationTrackerFactory.kt | 11 ++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt index e60cbf5e691..3f01c48b228 100644 --- a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt @@ -72,9 +72,12 @@ public abstract class KotlinModificationTrackerFactory { */ public abstract fun createModuleStateTracker(module: KtModule): KtModuleStateTracker - + /** + * Increments modification trackers to invalidate caches. If [includeBinaryTrackers] is `false`, binary module-related modification + * trackers will not be incremented (such as library trackers, SDK tracker, built-ins tracker, and so on). + */ @TestOnly - public abstract fun incrementModificationsCount() + public abstract fun incrementModificationsCount(includeBinaryTrackers: Boolean = true) public companion object { public fun getService(project: Project): KotlinModificationTrackerFactory = diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt index 854fc36b083..a80571719e7 100644 --- a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt @@ -38,11 +38,16 @@ public class KotlinStaticModificationTrackerFactory : KotlinModificationTrackerF } @TestOnly - override fun incrementModificationsCount() { + override fun incrementModificationsCount(includeBinaryTrackers: Boolean) { projectWide.incModificationCount() - librariesWide.incModificationCount() + if (includeBinaryTrackers) { + librariesWide.incModificationCount() + } moduleOutOfBlock.values.forEach { it.incModificationCount() } - moduleState.values.forEach { it.incModificationCount() } + moduleState.entries.forEach { (ktModule, tracker) -> + if (ktModule is KtBinaryModule && !includeBinaryTrackers) return@forEach + tracker.incModificationCount() + } } }