[JS IR] Use cacheable ZIP file system accessor in JS IR BE
Related to KT-51712
This commit is contained in:
committed by
Space Team
parent
8f22d6d36e
commit
2cad26f4cc
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.backend.js.codegen.JsGenerationGranularity
|
||||
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsIrProgramFragment
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||
import org.jetbrains.kotlin.konan.properties.propertyList
|
||||
import org.jetbrains.kotlin.library.KLIB_PROPERTY_DEPENDS
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
@@ -87,7 +88,8 @@ class CacheUpdater(
|
||||
|
||||
// libraries in topological order: [stdlib, ..., main]
|
||||
val libraryDependencies = stopwatch.measure("Resolving and loading klib dependencies") {
|
||||
val allResolvedDependencies = CommonJsKLibResolver.resolve(allModules, compilerConfiguration.resolverLogger)
|
||||
val zipAccessor = compilerConfiguration.get(JSConfigurationKeys.ZIP_FILE_SYSTEM_ACCESSOR)
|
||||
val allResolvedDependencies = CommonJsKLibResolver.resolve(allModules, compilerConfiguration.resolverLogger, zipAccessor)
|
||||
|
||||
val libraries = allResolvedDependencies.getFullList(TopologicalLibraryOrder).let { resolvedLibraries ->
|
||||
val mainLibraryIndex = resolvedLibraries.indexOfLast {
|
||||
|
||||
+16
-7
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.backend.common
|
||||
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.file.ZipFileSystemAccessor
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.KotlinLibraryProperResolverWithAttributes
|
||||
import org.jetbrains.kotlin.library.UnresolvedLibrary
|
||||
@@ -16,15 +17,21 @@ import org.jetbrains.kotlin.library.metadata.resolver.impl.libraryResolver
|
||||
import org.jetbrains.kotlin.util.Logger
|
||||
|
||||
object CommonJsKLibResolver {
|
||||
fun resolve(libraries: Collection<String>, logger: Logger): KotlinLibraryResolveResult =
|
||||
fun resolve(
|
||||
libraries: Collection<String>,
|
||||
logger: Logger,
|
||||
zipAccessor: ZipFileSystemAccessor? = null
|
||||
): KotlinLibraryResolveResult =
|
||||
resolveWithoutDependencies(
|
||||
libraries,
|
||||
logger
|
||||
logger,
|
||||
zipAccessor
|
||||
).resolveWithDependencies()
|
||||
|
||||
fun resolveWithoutDependencies(
|
||||
libraries: Collection<String>,
|
||||
logger: Logger
|
||||
logger: Logger,
|
||||
zipAccessor: ZipFileSystemAccessor?
|
||||
): KLibResolution {
|
||||
val unresolvedLibraries = libraries.map { UnresolvedLibrary(it, null) }
|
||||
val libraryAbsolutePaths = libraries.map { File(it).absolutePath }
|
||||
@@ -35,7 +42,8 @@ object CommonJsKLibResolver {
|
||||
distributionKlib = null,
|
||||
localKotlinDir = null,
|
||||
skipCurrentDir = false,
|
||||
logger = logger
|
||||
logger = logger,
|
||||
zipAccessor = zipAccessor
|
||||
).libraryResolver()
|
||||
|
||||
return KLibResolution(
|
||||
@@ -67,7 +75,8 @@ private class KLibResolverHelper(
|
||||
distributionKlib: String?,
|
||||
localKotlinDir: String?,
|
||||
skipCurrentDir: Boolean,
|
||||
logger: Logger
|
||||
logger: Logger,
|
||||
private val zipAccessor: ZipFileSystemAccessor?
|
||||
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
|
||||
repositories,
|
||||
directLibs,
|
||||
@@ -78,5 +87,5 @@ private class KLibResolverHelper(
|
||||
emptyList()
|
||||
) {
|
||||
// Stick with the default KotlinLibrary for now.
|
||||
override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault)
|
||||
}
|
||||
override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault, zipAccessor)
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb
|
||||
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
|
||||
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||
import org.jetbrains.kotlin.konan.file.ZipFileSystemAccessor
|
||||
import org.jetbrains.kotlin.konan.properties.Properties
|
||||
import org.jetbrains.kotlin.konan.properties.propertyList
|
||||
import org.jetbrains.kotlin.library.*
|
||||
@@ -472,7 +473,8 @@ class ModulesStructure(
|
||||
|
||||
val allDependenciesResolution = CommonJsKLibResolver.resolveWithoutDependencies(
|
||||
dependencies,
|
||||
compilerConfiguration.resolverLogger
|
||||
compilerConfiguration.resolverLogger,
|
||||
compilerConfiguration.get(JSConfigurationKeys.ZIP_FILE_SYSTEM_ACCESSOR)
|
||||
)
|
||||
|
||||
val fullResolvedLibraries by lazy {
|
||||
|
||||
Reference in New Issue
Block a user