From 29d0e3dbb5ca44fa06a4b79916ec3bad1d9f12ca Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 20 Jul 2020 16:21:09 +0300 Subject: [PATCH] Reuse createSession function for FIR in benchmark --- benchmarks/build.gradle.kts | 15 ++++++ .../benchmarks/AbstractSimpleFileBenchmark.kt | 46 +------------------ 2 files changed, 16 insertions(+), 45 deletions(-) diff --git a/benchmarks/build.gradle.kts b/benchmarks/build.gradle.kts index adafac7b181..a7b8a1896b3 100644 --- a/benchmarks/build.gradle.kts +++ b/benchmarks/build.gradle.kts @@ -40,6 +40,7 @@ repositories { dependencies { compile(kotlinStdlib()) compile(project(":compiler:frontend")) + compile(projectTests(":compiler:tests-common")) compile(project(":compiler:cli")) compile(intellijCoreDep()) { includeJars("intellij-core") } compile(jpsStandalone()) { includeJars("jps-model") } @@ -95,3 +96,17 @@ benchmark { register("main") } } + +tasks.named("classes") { + doLast { + tasks.named("mainBenchmarkJar", Zip::class.java) { + isZip64 = true + archiveName = "benchmarks.jar" + } + listOf("mainBenchmark", "mainFirBenchmark", "mainNiBenchmark").forEach { + tasks.named(it, JavaExec::class.java) { + systemProperty("idea.home.path", intellijRootDir().canonicalPath) + } + } + } +} diff --git a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt index 8c61b06a299..6689c018876 100644 --- a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt +++ b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt @@ -13,7 +13,6 @@ import com.intellij.psi.PsiFileFactory import com.intellij.psi.impl.PsiFileFactoryImpl import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.LightVirtualFile -import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys @@ -26,21 +25,14 @@ import org.jetbrains.kotlin.context.withModule import org.jetbrains.kotlin.context.withProject import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.diagnostics.Severity -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.builder.RawFirBuilder -import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession -import org.jetbrains.kotlin.fir.java.FirLibrarySession -import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider +import org.jetbrains.kotlin.fir.createSession import org.jetbrains.kotlin.fir.resolve.firProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.platform.TargetPlatform -import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices -import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices import org.jetbrains.kotlin.storage.ExceptionTracker import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager @@ -174,39 +166,3 @@ abstract class AbstractSimpleFileBenchmark { protected abstract fun buildText(): String } - -fun createSession( - environment: KotlinCoreEnvironment, - sourceScope: GlobalSearchScope, - librariesScope: GlobalSearchScope = GlobalSearchScope.notScope(sourceScope) -): FirSession { - val moduleInfo = FirTestModuleInfo() - val project = environment.project - val provider = FirProjectSessionProvider(project) - return FirJavaModuleBasedSession.create(moduleInfo, provider, sourceScope).also { - createSessionForDependencies(provider, moduleInfo, librariesScope, environment) - } -} - -private fun createSessionForDependencies( - provider: FirProjectSessionProvider, - moduleInfo: FirTestModuleInfo, - librariesScope: GlobalSearchScope, - environment: KotlinCoreEnvironment -) { - val dependenciesInfo = FirTestModuleInfo() - moduleInfo.dependencies.add(dependenciesInfo) - FirLibrarySession.create( - dependenciesInfo, provider, librariesScope, environment.project, - environment.createPackagePartProvider(librariesScope) - ) -} - -class FirTestModuleInfo( - override val name: Name = Name.identifier("TestModule"), - val dependencies: MutableList = mutableListOf(), - override val platform: TargetPlatform = JvmPlatforms.unspecifiedJvmPlatform, - override val analyzerServices: PlatformDependentAnalyzerServices = JvmPlatformAnalyzerServices -) : ModuleInfo { - override fun dependencies(): List = dependencies -}