Create a compiler argument to adjust the klib zip file cache.

^KT-79675
diff --git a/compiler/arguments/resources/kotlin-compiler-arguments.json b/compiler/arguments/resources/kotlin-compiler-arguments.json
index 9349f77..e640791 100644
--- a/compiler/arguments/resources/kotlin-compiler-arguments.json
+++ b/compiler/arguments/resources/kotlin-compiler-arguments.json
@@ -6391,6 +6391,37 @@
                                     "deprecatedVersion": null,
                                     "removedVersion": null
                                 }
+                            },
+                            {
+                                "name": "Xklib-zip-file-accessor-cache-limit",
+                                "shortName": null,
+                                "deprecatedName": null,
+                                "description": {
+                                    "current": "Maximum number of klibs that can be cached during compilation. Default is 64.",
+                                    "valueInVersions": []
+                                },
+                                "delimiter": null,
+                                "valueType": {
+                                    "type": "org.jetbrains.kotlin.arguments.dsl.types.IntType",
+                                    "isNullable": {
+                                        "current": false,
+                                        "valueInVersions": []
+                                    },
+                                    "defaultValue": {
+                                        "current": 64,
+                                        "valueInVersions": []
+                                    }
+                                },
+                                "valueDescription": {
+                                    "current": null,
+                                    "valueInVersions": []
+                                },
+                                "releaseVersionsMetadata": {
+                                    "introducedVersion": "2.3.0",
+                                    "stabilizedVersion": null,
+                                    "deprecatedVersion": null,
+                                    "removedVersion": null
+                                }
                             }
                         ],
                         "nestedLevels": [
diff --git a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonKlibBasedCompilerArguments.kt b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonKlibBasedCompilerArguments.kt
index 7dcb0d4..1a66e38 100644
--- a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonKlibBasedCompilerArguments.kt
+++ b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonKlibBasedCompilerArguments.kt
@@ -10,6 +10,7 @@
 import org.jetbrains.kotlin.arguments.dsl.defaultNull
 import org.jetbrains.kotlin.arguments.dsl.defaultTrue
 import org.jetbrains.kotlin.arguments.dsl.types.BooleanType
+import org.jetbrains.kotlin.arguments.dsl.types.IntType
 import org.jetbrains.kotlin.arguments.dsl.types.StringArrayType
 import org.jetbrains.kotlin.arguments.dsl.types.StringType
 
@@ -107,4 +108,16 @@
             introducedVersion = KotlinReleaseVersion.v2_2_0,
         )
     }
+
+    compilerArgument {
+        name = "Xklib-zip-file-accessor-cache-limit"
+        description = "Maximum number of klibs that can be cached during compilation. Default is 64.".asReleaseDependent()
+        valueType = IntType(
+            defaultValue = 64.asReleaseDependent()
+        )
+
+        lifecycle(
+            introducedVersion = KotlinReleaseVersion.v2_3_0
+        )
+    }
 }
diff --git a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/NativeCompilerArguments.kt b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/NativeCompilerArguments.kt
index 48b3ef1..6aa25b3 100644
--- a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/NativeCompilerArguments.kt
+++ b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/NativeCompilerArguments.kt
@@ -1062,7 +1062,8 @@
 
     compilerArgument {
         name = "Xmanifest-native-targets"
-        description = "Comma-separated list that will be written as the value of 'native_targets' property in the .klib manifest. Unknown values are discarded.".asReleaseDependent()
+        description =
+            "Comma-separated list that will be written as the value of 'native_targets' property in the .klib manifest. Unknown values are discarded.".asReleaseDependent()
         valueType = StringArrayType.defaultNull
 
         lifecycle(
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArguments.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArguments.kt
index d152a29..0f52f6f 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArguments.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArguments.kt
@@ -95,4 +95,14 @@
             field = if (value.isNullOrEmpty()) null else value
         }
 
+    @Argument(
+        value = "-Xklib-zip-file-accessor-cache-limit",
+        description = "Maximum number of klibs that can be cached during compilation. Default is 64.",
+    )
+    var klibZipFileAccessorCacheLimit: String = "64"
+        set(value) {
+            checkFrozen()
+            field = value
+        }
+
 }
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArgumentsCopyGenerated.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArgumentsCopyGenerated.kt
index 543b63c..4d5850f 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArgumentsCopyGenerated.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonKlibBasedCompilerArgumentsCopyGenerated.kt
@@ -14,6 +14,7 @@
     to.duplicatedUniqueNameStrategy = from.duplicatedUniqueNameStrategy
     to.enableSignatureClashChecks = from.enableSignatureClashChecks
     to.irInlinerBeforeKlibSerialization = from.irInlinerBeforeKlibSerialization
+    to.klibZipFileAccessorCacheLimit = from.klibZipFileAccessorCacheLimit
     to.normalizeAbsolutePath = from.normalizeAbsolutePath
     to.partialLinkageLogLevel = from.partialLinkageLogLevel
     to.partialLinkageMode = from.partialLinkageMode
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/Helpers.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/Helpers.kt
index d2bfcb9..7a62d3b 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/Helpers.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/Helpers.kt
@@ -5,7 +5,6 @@
 
 package org.jetbrains.kotlin.cli.js
 
-import com.intellij.openapi.Disposable
 import com.intellij.util.ExceptionUtil
 import org.jetbrains.kotlin.backend.js.JsGenerationGranularity
 import org.jetbrains.kotlin.backend.js.TsCompilationStrategy
@@ -23,8 +22,6 @@
 import org.jetbrains.kotlin.js.config.SourceMapNamesPolicy
 import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding
 import org.jetbrains.kotlin.js.config.wasmCompilation
-import org.jetbrains.kotlin.konan.file.ZipFileSystemAccessor
-import org.jetbrains.kotlin.konan.file.ZipFileSystemCacheableAccessor
 import org.jetbrains.kotlin.library.loader.KlibPlatformChecker
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.serialization.js.ModuleKind
@@ -60,16 +57,6 @@
         else -> TsCompilationStrategy.MERGED
     }
 
-internal class DisposableZipFileSystemAccessor private constructor(
-    private val zipAccessor: ZipFileSystemCacheableAccessor,
-) : Disposable, ZipFileSystemAccessor by zipAccessor {
-    constructor(cacheLimit: Int) : this(ZipFileSystemCacheableAccessor(cacheLimit))
-
-    override fun dispose() {
-        zipAccessor.reset()
-    }
-}
-
 internal val sourceMapContentEmbeddingMap: Map<String, SourceMapSourceEmbedding> = mapOf(
     K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_ALWAYS to SourceMapSourceEmbedding.ALWAYS,
     K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_NEVER to SourceMapSourceEmbedding.NEVER,
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.kt
index 382ea83..7e037ea 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.kt
@@ -6,7 +6,6 @@
 package org.jetbrains.kotlin.cli.js
 
 import com.intellij.openapi.Disposable
-import com.intellij.openapi.util.Disposer
 import org.jetbrains.kotlin.analyzer.CompilationErrorException
 import org.jetbrains.kotlin.backend.common.LoadedKlibs
 import org.jetbrains.kotlin.cli.common.CLICompiler
@@ -29,7 +28,6 @@
 import org.jetbrains.kotlin.cli.pipeline.web.WebCliPipeline
 import org.jetbrains.kotlin.config.CommonConfigurationKeys
 import org.jetbrains.kotlin.config.CompilerConfiguration
-import org.jetbrains.kotlin.config.KlibConfigurationKeys
 import org.jetbrains.kotlin.config.Services
 import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
 import org.jetbrains.kotlin.ir.backend.js.*
@@ -119,14 +117,10 @@
         val pluginLoadResult = loadPlugins(paths, arguments, configuration, rootDisposable)
         if (pluginLoadResult != OK) return pluginLoadResult
 
-        CommonWebConfigurationUpdater.initializeCommonConfiguration(compilerImpl.configuration, arguments)
+        CommonWebConfigurationUpdater.initializeCommonConfiguration(compilerImpl.configuration, arguments, rootDisposable)
 
         val targetEnvironment = compilerImpl.tryInitializeCompiler(rootDisposable) ?: return COMPILATION_ERROR
 
-        val zipAccessor = DisposableZipFileSystemAccessor(64)
-        Disposer.register(rootDisposable, zipAccessor)
-        targetEnvironment.configuration.put(KlibConfigurationKeys.ZIP_FILE_SYSTEM_ACCESSOR, zipAccessor)
-
         val sourcesFiles = targetEnvironment.getSourceFiles()
 
         if (!checkKotlinPackageUsageForPsi(targetEnvironment.configuration, sourcesFiles)) return COMPILATION_ERROR
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/pipeline/web/WebConfigurationPhase.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/pipeline/web/WebConfigurationPhase.kt
index c570845..56b84a5 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/pipeline/web/WebConfigurationPhase.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/pipeline/web/WebConfigurationPhase.kt
@@ -5,7 +5,7 @@
 
 package org.jetbrains.kotlin.cli.pipeline.web
 
-import com.intellij.openapi.util.Disposer
+import com.intellij.openapi.Disposable
 import com.intellij.openapi.util.text.StringUtil
 import org.jetbrains.kotlin.backend.common.linkage.partial.setupPartialLinkageConfig
 import org.jetbrains.kotlin.cli.common.allowKotlinPackage
@@ -60,7 +60,7 @@
     ) {
         val (arguments, services, rootDisposable, _, _) = input
         setupPlatformSpecificArgumentsAndServices(configuration, arguments, services)
-        initializeCommonConfiguration(configuration, arguments)
+        initializeCommonConfiguration(configuration, arguments, rootDisposable)
         configuration.jsIncrementalCompilationEnabled = incrementalCompilationIsEnabledForJs(arguments)
 
         val messageCollector = configuration.messageCollector
@@ -85,9 +85,6 @@
         arguments.main?.let { configuration.callMainMode = it }
         configuration.dce = arguments.irDce
 
-        val zipAccessor = DisposableZipFileSystemAccessor(64)
-        Disposer.register(rootDisposable, zipAccessor)
-        configuration.zipFileSystemAccessor = zipAccessor
         configuration.perModuleOutputName = arguments.irPerModuleOutputName
         configuration.icCacheDirectory = arguments.cacheDirectory
         configuration.icCacheReadOnly = arguments.icCacheReadonly
@@ -222,8 +219,8 @@
         )
     }
 
-    internal fun initializeCommonConfiguration(configuration: CompilerConfiguration, arguments: K2JSCompilerArguments) {
-        configuration.setupCommonKlibArguments(arguments, canBeMetadataKlibCompilation = false)
+    internal fun initializeCommonConfiguration(configuration: CompilerConfiguration, arguments: K2JSCompilerArguments, rootDisposable: Disposable) {
+        configuration.setupCommonKlibArguments(arguments, canBeMetadataKlibCompilation = false, rootDisposable = rootDisposable)
 
         val libraries: List<String> = configureLibraries(arguments.libraries) + listOfNotNull(arguments.includes)
         val friendLibraries: List<String> = configureLibraries(arguments.friendModules)
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/klibArguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/klibArguments.kt
index 1697ec3..ccce865 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/klibArguments.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/klibArguments.kt
@@ -5,22 +5,17 @@
 
 package org.jetbrains.kotlin.cli.common
 
+import com.intellij.openapi.Disposable
+import com.intellij.openapi.util.Disposer
 import org.jetbrains.kotlin.cli.common.arguments.CommonKlibBasedCompilerArguments
 import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
 import org.jetbrains.kotlin.cli.common.messages.MessageCollector
+import org.jetbrains.kotlin.config.*
 import org.jetbrains.kotlin.config.CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS
-import org.jetbrains.kotlin.config.CompilerConfiguration
-import org.jetbrains.kotlin.config.DuplicatedUniqueNameStrategy
-import org.jetbrains.kotlin.config.KlibAbiCompatibilityLevel
-import org.jetbrains.kotlin.config.LanguageFeature
-import org.jetbrains.kotlin.config.LanguageVersion
-import org.jetbrains.kotlin.config.customKlibAbiVersion
-import org.jetbrains.kotlin.config.duplicatedUniqueNameStrategy
-import org.jetbrains.kotlin.config.klibAbiCompatibilityLevel
-import org.jetbrains.kotlin.config.klibNormalizeAbsolutePath
-import org.jetbrains.kotlin.config.klibRelativePathBases
-import org.jetbrains.kotlin.config.messageCollector
-import org.jetbrains.kotlin.config.produceKlibSignaturesClashChecks
+import org.jetbrains.kotlin.config.zipFileSystemAccessor
+import org.jetbrains.kotlin.konan.file.ZipFileSystemAccessor
+import org.jetbrains.kotlin.konan.file.ZipFileSystemCacheableAccessor
+import org.jetbrains.kotlin.konan.file.ZipFileSystemInPlaceAccessor
 import org.jetbrains.kotlin.library.KotlinAbiVersion
 import java.util.EnumMap
 import kotlin.collections.plus
@@ -31,7 +26,8 @@
  */
 fun CompilerConfiguration.setupCommonKlibArguments(
     arguments: CommonKlibBasedCompilerArguments,
-    canBeMetadataKlibCompilation: Boolean
+    canBeMetadataKlibCompilation: Boolean,
+    rootDisposable: Disposable,
 ) {
     val isKlibMetadataCompilation = canBeMetadataKlibCompilation && arguments.metadataKlib
 
@@ -55,6 +51,8 @@
     if (!isKlibMetadataCompilation) {
         setupKlibAbiCompatibilityLevel()
     }
+
+    zipFileSystemAccessor = getZipFileSystemAccessor(arguments, messageCollector, rootDisposable)
 }
 
 /**
@@ -76,6 +74,8 @@
 
     // ABI compatibility level (the one that actually affects the KLIB serialization).
     klibAbiCompatibilityLevel = source.klibAbiCompatibilityLevel
+
+    zipFileSystemAccessor = source.zipFileSystemAccessor
 }
 
 private fun parseCustomKotlinAbiVersion(customKlibAbiVersion: String?, collector: MessageCollector): KotlinAbiVersion? {
@@ -99,6 +99,39 @@
     return KotlinAbiVersion(version[0], version[1], version[2])
 }
 
+private fun getZipFileSystemAccessor(
+    arguments: CommonKlibBasedCompilerArguments,
+    collector: MessageCollector,
+    rootDisposable: Disposable,
+): ZipFileSystemAccessor? {
+    val cacheLimit = arguments.klibZipFileAccessorCacheLimit.toIntOrNull()
+    if (cacheLimit == null || cacheLimit < 0) {
+        collector.report(
+            CompilerMessageSeverity.ERROR,
+            buildString {
+                append("Cannot parse -Xklib-zip-file-accessor-cache-limit value: \"${arguments.klibZipFileAccessorCacheLimit}\". ")
+                append("It must be an integer >= 0.")
+            }
+        )
+        return null
+    }
+    return if (cacheLimit > 0) {
+        DisposableZipFileSystemAccessor(cacheLimit).also { Disposer.register(rootDisposable, it) }
+    } else {
+        ZipFileSystemInPlaceAccessor
+    }
+}
+
+private class DisposableZipFileSystemAccessor(
+    private val zipAccessor: ZipFileSystemCacheableAccessor
+) : Disposable, ZipFileSystemAccessor by zipAccessor {
+    constructor(cacheLimit: Int) : this(ZipFileSystemCacheableAccessor(cacheLimit))
+
+    override fun dispose() {
+        zipAccessor.reset()
+    }
+}
+
 private fun CompilerConfiguration.setupKlibAbiCompatibilityLevel() {
     val languageVersionSettings = this[LANGUAGE_VERSION_SETTINGS]
         ?: error("Language version settings should be already set up")
diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/loadMetadataKlibs.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/loadMetadataKlibs.kt
index e011953..f83d977 100644
--- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/loadMetadataKlibs.kt
+++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/loadMetadataKlibs.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.backend.common
 
 import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.config.zipFileSystemAccessor
 import org.jetbrains.kotlin.library.loader.KlibLoader
 
 /**
@@ -17,6 +18,7 @@
 fun loadMetadataKlibs(libraryPaths: List<String>, configuration: CompilerConfiguration): LoadedKlibs {
     val result = KlibLoader {
         libraryPaths(libraryPaths)
+        configuration.zipFileSystemAccessor?.let { zipFileSystemAccessor(it)}
         // IMPORTANT: Do not set any ABI version requirements - metadata libraries are not supposed to have any ABI.
     }.load()
     result.reportLoadingProblemsIfAny(configuration)
diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/loadJvmKlibs.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/loadJvmKlibs.kt
index 34b24ab..fdc284e 100644
--- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/loadJvmKlibs.kt
+++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/loadJvmKlibs.kt
@@ -4,6 +4,7 @@
 import org.jetbrains.kotlin.backend.common.reportLoadingProblemsIfAny
 import org.jetbrains.kotlin.config.CompilerConfiguration
 import org.jetbrains.kotlin.config.klibPaths
+import org.jetbrains.kotlin.config.zipFileSystemAccessor
 import org.jetbrains.kotlin.library.loader.KlibLoader
 
 /**
@@ -12,7 +13,10 @@
  * @param configuration The current compiler configuration.
  */
 fun loadJvmKlibs(configuration: CompilerConfiguration): LoadedKlibs {
-    val result = KlibLoader { libraryPaths(configuration.klibPaths) }.load()
+    val result = KlibLoader {
+        libraryPaths(configuration.klibPaths)
+        configuration.zipFileSystemAccessor?.let { zipFileSystemAccessor(it)}
+    }.load()
     result.reportLoadingProblemsIfAny(configuration, allAsErrors = true)
     return LoadedKlibs(all = result.librariesStdlibFirst)
 }
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
index f1c27f1..5a75e83 100644
--- a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
+++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
@@ -10,6 +10,7 @@
 import org.jetbrains.kotlin.backend.common.loadFriendLibraries
 import org.jetbrains.kotlin.backend.common.reportLoadingProblemsIfAny
 import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.config.zipFileSystemAccessor
 import org.jetbrains.kotlin.konan.target.KonanTarget
 import org.jetbrains.kotlin.library.KotlinAbiVersion
 import org.jetbrains.kotlin.library.loader.KlibLoader
@@ -38,6 +39,7 @@
         libraryPaths(libraryPaths)
         platformChecker(KlibPlatformChecker.Native(nativeTarget.name))
         maxPermittedAbiVersion(KotlinAbiVersion.CURRENT)
+        configuration.zipFileSystemAccessor?.let { zipFileSystemAccessor(it)}
     }.load()
         .apply { reportLoadingProblemsIfAny(configuration, allAsErrors = true) }
         // TODO (KT-76785): Handling of duplicated names is a workaround that needs to be removed in the future.
diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out
index c9d9e2c..955f2d6 100644
--- a/compiler/testData/cli/js/jsExtraHelp.out
+++ b/compiler/testData/cli/js/jsExtraHelp.out
@@ -78,6 +78,8 @@
   -Xklib-abi-version=<version> Specify the custom ABI version to be written in KLIB. This option is intended only for tests.
                              Warning: This option does not affect KLIB ABI. Neither allows it making a KLIB backward-compatible with older ABI versions.
                              The only observable effect is that a custom ABI version is written to KLIB manifest file.
+  -Xklib-zip-file-accessor-cache-limit
+                             Maximum number of klibs that can be cached during compilation. Default is 64.
   -Xrepl                     Run Kotlin REPL (deprecated)
   -Xno-inline                Disable method inlining.
   -Xskip-metadata-version-check Allow loading classes with bad metadata versions and pre-release classes.
diff --git a/native/cli-native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/native/cli-native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
index 32b1155..a88c930 100644
--- a/native/cli-native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
+++ b/native/cli-native/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
@@ -106,7 +106,7 @@
         configuration.phaseConfig = createPhaseConfig(arguments)
 
         // Values for keys for non-nullable arguments below must be also copied during 1st stage preparation within `KonanDriver.splitOntoTwoStages()`
-        configuration.setupCommonKlibArguments(arguments, canBeMetadataKlibCompilation = true)
+        configuration.setupCommonKlibArguments(arguments, canBeMetadataKlibCompilation = true, rootDisposable)
 
         return environment
     }