K2: use PUBLICATION mode for lazy members in KtSourceElement
This commit removes performance problems during these members access
This commit is contained in:
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)
|
||||
|
||||
Reference in New Issue
Block a user