K2: use PUBLICATION mode for lazy members in KtSourceElement

This commit removes performance problems during these members access
This commit is contained in:
Mikhail Glukhikh
2022-12-15 14:43:28 +01:00
committed by Space Team
parent 0e4e53786c
commit af96c735bb
@@ -284,9 +284,13 @@ sealed class KtPsiSourceElement(val psi: PsiElement) : KtSourceElement() {
override val endOffset: Int
get() = psi.textRange.endOffset
override val lighterASTNode by lazy { TreeBackedLighterAST.wrap(psi.node) }
override val lighterASTNode: LighterASTNode by lazy(LazyThreadSafetyMode.PUBLICATION) {
TreeBackedLighterAST.wrap(psi.node)
}
override val treeStructure: FlyweightCapableTreeStructure<LighterASTNode> by lazy { WrappedTreeStructure(psi.containingFile) }
override val treeStructure: FlyweightCapableTreeStructure<LighterASTNode> by lazy(LazyThreadSafetyMode.PUBLICATION) {
WrappedTreeStructure(psi.containingFile)
}
internal class WrappedTreeStructure(file: PsiFile) : FlyweightCapableTreeStructure<LighterASTNode> {
private val lighterAST = TreeBackedLighterAST(file.node)