FIR CLI: count lines/files and report events to perfman
This commit is contained in:
+27
-14
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.cli.common.computeKotlinPaths
|
||||
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot
|
||||
import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots
|
||||
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
|
||||
import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
|
||||
import org.jetbrains.kotlin.cli.common.fir.reportToMessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.IrMessageCollector
|
||||
@@ -28,7 +28,10 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.modules.ModuleBuilder
|
||||
import org.jetbrains.kotlin.cli.common.setupCommonArguments
|
||||
import org.jetbrains.kotlin.cli.jvm.*
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.*
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.findMainClass
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.forAllFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.*
|
||||
import org.jetbrains.kotlin.cli.jvm.config.*
|
||||
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
||||
@@ -183,11 +186,16 @@ class IncrementalFirJvmCompilerRunner(
|
||||
}
|
||||
|
||||
val diagnosticsReporter = DiagnosticReporterFactory.createReporter()
|
||||
val performanceManager = configuration[CLIConfigurationKeys.PERF_MANAGER]
|
||||
val compilerEnvironment = ModuleCompilerEnvironment(projectEnvironment, diagnosticsReporter)
|
||||
|
||||
performanceManager?.notifyCompilerInitialized(0, 0, "${targetId.name}-${targetId.type}")
|
||||
|
||||
// !! main class - maybe from cache?
|
||||
var mainClassFqName: FqName? = null
|
||||
|
||||
val renderDiagnosticName = configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
|
||||
|
||||
var incrementalExcludesScope: AbstractProjectFileSearchScope? = null
|
||||
|
||||
fun firIncrementalCycle(): ModuleCompilerAnalyzedOutput? {
|
||||
@@ -200,15 +208,20 @@ class IncrementalFirJvmCompilerRunner(
|
||||
configuration
|
||||
)
|
||||
|
||||
performanceManager?.notifyAnalysisStarted()
|
||||
|
||||
val analysisResults =
|
||||
compileModuleToAnalyzedFir(
|
||||
compilerInput,
|
||||
compilerEnvironment,
|
||||
emptyList(),
|
||||
incrementalExcludesScope,
|
||||
diagnosticsReporter
|
||||
diagnosticsReporter,
|
||||
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.fir)
|
||||
@@ -217,11 +230,7 @@ class IncrementalFirJvmCompilerRunner(
|
||||
allCompiledSources.addAll(dirtySources)
|
||||
|
||||
if (diagnosticsReporter.hasErrors) {
|
||||
FirDiagnosticsCompilerResultsReporter.reportToMessageCollector(
|
||||
diagnosticsReporter,
|
||||
collector,
|
||||
configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
|
||||
)
|
||||
diagnosticsReporter.reportToMessageCollector(messageCollector, renderDiagnosticName)
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -248,6 +257,9 @@ class IncrementalFirJvmCompilerRunner(
|
||||
|
||||
val cycleResult = firIncrementalCycle() ?: return ExitCode.COMPILATION_ERROR to allCompiledSources
|
||||
|
||||
performanceManager?.notifyGenerationStarted()
|
||||
performanceManager?.notifyIRTranslationStarted()
|
||||
|
||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
||||
val irGenerationExtensions =
|
||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||
@@ -267,6 +279,8 @@ class IncrementalFirJvmCompilerRunner(
|
||||
irGenerationExtensions
|
||||
)
|
||||
|
||||
performanceManager?.notifyIRTranslationFinished()
|
||||
|
||||
val irInput = ModuleCompilerIrBackendInput(
|
||||
targetId,
|
||||
configuration,
|
||||
@@ -277,13 +291,12 @@ class IncrementalFirJvmCompilerRunner(
|
||||
cycleResult.session
|
||||
)
|
||||
|
||||
val codegenOutput = generateCodeFromIr(irInput, compilerEnvironment)
|
||||
val codegenOutput = generateCodeFromIr(irInput, compilerEnvironment, performanceManager)
|
||||
|
||||
FirDiagnosticsCompilerResultsReporter.reportToMessageCollector(
|
||||
diagnosticsReporter,
|
||||
collector,
|
||||
configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
|
||||
)
|
||||
performanceManager?.notifyIRGenerationFinished()
|
||||
performanceManager?.notifyGenerationFinished()
|
||||
|
||||
diagnosticsReporter.reportToMessageCollector(messageCollector, renderDiagnosticName)
|
||||
|
||||
writeOutputs(
|
||||
projectEnvironment,
|
||||
|
||||
Reference in New Issue
Block a user