From 8275c92cd42f31eb844eae829a850dc2c2bec4a8 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 4 Mar 2024 18:57:52 +0100 Subject: [PATCH] [K2] Move `Analysis` perf calculation inside corresponding fronted runner This way it is easier to understand where `notifyAnalysis*` methods were called. Also, in K1, we are not including `checkKotlinPackageUsageFor*` in the analysis time. --- .../cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt | 9 +++++---- .../kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt | 7 ++----- .../incremental/IncrementalFirJvmCompilerRunner.kt | 4 ---- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 5bf14089453..3a17ccab3fa 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -141,7 +141,6 @@ object FirKotlinToJvmBytecodeCompiler { } private fun CompilationContext.compileModule(): Pair? { - performanceManager?.notifyAnalysisStarted() ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() if (!checkKotlinPackageUsageForPsi(configuration, allSources)) return null @@ -149,9 +148,7 @@ object FirKotlinToJvmBytecodeCompiler { val renderDiagnosticNames = configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME) val diagnosticsReporter = createPendingReporter(messageCollector) - val firResult = runFrontend(allSources, diagnosticsReporter, module.getModuleName(), module.getFriendPaths()).also { - performanceManager?.notifyAnalysisFinished() - } + val firResult = runFrontend(allSources, diagnosticsReporter, module.getModuleName(), module.getFriendPaths()) if (firResult == null) { FirDiagnosticsCompilerResultsReporter.reportToMessageCollector(diagnosticsReporter, messageCollector, renderDiagnosticNames) return null @@ -192,6 +189,9 @@ object FirKotlinToJvmBytecodeCompiler { rootModuleName: String, friendPaths: List, ): FirResult? { + val performanceManager = configuration.get(CLIConfigurationKeys.PERF_MANAGER) + performanceManager?.notifyAnalysisStarted() + val syntaxErrors = ktFiles.fold(false) { errorsFound, ktFile -> AnalyzerWithCompilerReport.reportSyntaxErrors(ktFile, messageCollector).isHasErrors or errorsFound } @@ -228,6 +228,7 @@ object FirKotlinToJvmBytecodeCompiler { } outputs.runPlatformCheckers(diagnosticsReporter) + performanceManager?.notifyAnalysisFinished() return runUnless(syntaxErrors || scriptsInCommonSourcesErrors || diagnosticsReporter.hasErrors) { FirResult(outputs) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt index 0e84cfe9075..db43419dcf5 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt @@ -111,9 +111,6 @@ fun compileModulesUsingFrontendIrAndLightTree( val renderDiagnosticNames = moduleConfiguration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME) val diagnosticsReporter = FirKotlinToJvmBytecodeCompiler.createPendingReporter(messageCollector) - - performanceManager?.notifyAnalysisStarted() - val analysisResults = compileModuleToAnalyzedFir( compilerInput, projectEnvironment, @@ -127,8 +124,6 @@ fun compileModulesUsingFrontendIrAndLightTree( return false } - performanceManager?.notifyAnalysisFinished() - val mainClassFqName = runIf(moduleConfiguration.get(JVMConfigurationKeys.OUTPUT_JAR) != null) { findMainClass(analysisResults.outputs.last().fir) } @@ -273,6 +268,7 @@ fun compileModuleToAnalyzedFir( diagnosticsReporter: BaseDiagnosticsCollector, performanceManager: CommonCompilerPerformanceManager? ): FirResult { + performanceManager?.notifyAnalysisStarted() val moduleConfiguration = input.configuration var librariesScope = projectEnvironment.getSearchScopeForProjectLibraries() @@ -317,6 +313,7 @@ fun compileModuleToAnalyzedFir( } outputs.runPlatformCheckers(diagnosticsReporter) + performanceManager?.notifyAnalysisFinished() return FirResult(outputs) } diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt index 8bc3dca77bf..6a0741afcea 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunner.kt @@ -213,8 +213,6 @@ open class IncrementalFirJvmCompilerRunner( configuration ) - performanceManager?.notifyAnalysisStarted() - val analysisResults = compileModuleToAnalyzedFir( compilerInput, @@ -225,8 +223,6 @@ open class IncrementalFirJvmCompilerRunner( performanceManager ) - performanceManager?.notifyAnalysisFinished() - // TODO: consider what to do if many compilations find a main class if (mainClassFqName == null && configuration.get(JVMConfigurationKeys.OUTPUT_JAR) != null) { mainClassFqName = findMainClass(analysisResults.outputs.last().fir)