[LL FIR] remove redundant function runCustomResolveUnderLock for locking
Conflicts: analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt
This commit is contained in:
+1
-2
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionDepend
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FileTowerProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FileTowerProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerDataContextAllElementsCollector
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerDataContextAllElementsCollector
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.KtToFirMapping
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.KtToFirMapping
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirNonLocalDeclarationBuilder
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirNonLocalDeclarationBuilder
|
||||||
@@ -247,7 +246,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
|||||||
|
|
||||||
val isInBodyReplacement = isInBodyReplacement(nonLocalDeclaration, replacement)
|
val isInBodyReplacement = isInBodyReplacement(nonLocalDeclaration, replacement)
|
||||||
|
|
||||||
return firResolveSession.globalComponents.lockProvider.runCustomResolveUnderLock(originalFirFile) {
|
return firResolveSession.globalComponents.lockProvider.withLock(originalFirFile) {
|
||||||
val copiedFirDeclaration = if (isInBodyReplacement) {
|
val copiedFirDeclaration = if (isInBodyReplacement) {
|
||||||
when (originalDeclaration) {
|
when (originalDeclaration) {
|
||||||
is FirSimpleFunction ->
|
is FirSimpleFunction ->
|
||||||
|
|||||||
+1
-11
@@ -26,14 +26,4 @@ internal class LLFirLockProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val DEFAULT_LOCKING_INTERVAL = 50L
|
private const val DEFAULT_LOCKING_INTERVAL = 50L
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs [resolve] function (which is considered to do some resolve on [firFile]) under a lock for [firFile]
|
|
||||||
*/
|
|
||||||
internal inline fun <R> LLFirLockProvider.runCustomResolveUnderLock(
|
|
||||||
firFile: FirFile,
|
|
||||||
body: () -> R
|
|
||||||
): R {
|
|
||||||
return withLock(key = firFile, lockingIntervalMs = DEFAULT_LOCKING_INTERVAL, body)
|
|
||||||
}
|
|
||||||
+2
-3
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveCompone
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionInvalidator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionInvalidator
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||||
@@ -70,7 +69,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
|
|||||||
if (target.resolvePhase >= FirResolvePhase.IMPORTS) return
|
if (target.resolvePhase >= FirResolvePhase.IMPORTS) return
|
||||||
val firFile = target.getContainingFile() ?: return
|
val firFile = target.getContainingFile() ?: return
|
||||||
if (firFile.resolvePhase >= FirResolvePhase.IMPORTS) return
|
if (firFile.resolvePhase >= FirResolvePhase.IMPORTS) return
|
||||||
moduleComponents.globalResolveComponents.lockProvider.runCustomResolveUnderLock(firFile) {
|
moduleComponents.globalResolveComponents.lockProvider.withLock(firFile) {
|
||||||
resolveFileToImportsWithoutLock(firFile)
|
resolveFileToImportsWithoutLock(firFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,7 +112,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
|
|||||||
for (designation in declarationDesignationsToResolve(target)) {
|
for (designation in declarationDesignationsToResolve(target)) {
|
||||||
if (!designation.target.isValidForResolve()) continue
|
if (!designation.target.isValidForResolve()) continue
|
||||||
if (designation.target.resolvePhase >= toPhase) continue
|
if (designation.target.resolvePhase >= toPhase) continue
|
||||||
moduleComponents.globalResolveComponents.lockProvider.runCustomResolveUnderLock(designation.firFile) {
|
moduleComponents.globalResolveComponents.lockProvider.withLock(designation.firFile) {
|
||||||
runLazyDesignatedResolveWithoutLock(
|
runLazyDesignatedResolveWithoutLock(
|
||||||
designation = designation,
|
designation = designation,
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
|
|||||||
+2
-3
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled
|
||||||
@@ -97,7 +96,7 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
|
|||||||
checkCanceled()
|
checkCanceled()
|
||||||
val resolver = DesignatedFirSupertypeResolverVisitor(designation)
|
val resolver = DesignatedFirSupertypeResolverVisitor(designation)
|
||||||
designation.firFile.lazyResolveToPhase(FirResolvePhase.IMPORTS)
|
designation.firFile.lazyResolveToPhase(FirResolvePhase.IMPORTS)
|
||||||
lockProvider.runCustomResolveUnderLock(designation.firFile) {
|
lockProvider.withLock(designation.firFile) {
|
||||||
designation.firFile.accept(resolver, null)
|
designation.firFile.accept(resolver, null)
|
||||||
}
|
}
|
||||||
resolver.declarationTransformer.ensureDesignationPassed()
|
resolver.declarationTransformer.ensureDesignationPassed()
|
||||||
@@ -146,7 +145,7 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
|
|||||||
val filesToDesignations = designations.groupBy { it.firFile }
|
val filesToDesignations = designations.groupBy { it.firFile }
|
||||||
for (designationsPerFile in filesToDesignations) {
|
for (designationsPerFile in filesToDesignations) {
|
||||||
checkCanceled()
|
checkCanceled()
|
||||||
lockProvider.runCustomResolveUnderLock(designationsPerFile.key) {
|
lockProvider.withLock(designationsPerFile.key) {
|
||||||
val session = designationsPerFile.key.llFirResolvableSession
|
val session = designationsPerFile.key.llFirResolvableSession
|
||||||
?: error("When FirFile exists for the declaration, the session should be resolvevablable")
|
?: error("When FirFile exists for the declaration, the session should be resolvevablable")
|
||||||
session.moduleComponents.sessionInvalidator.withInvalidationOnException(session) {
|
session.moduleComponents.sessionInvalidator.withInvalidationOnException(session) {
|
||||||
|
|||||||
Reference in New Issue
Block a user