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
|
override val endOffset: Int
|
||||||
get() = psi.textRange.endOffset
|
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> {
|
internal class WrappedTreeStructure(file: PsiFile) : FlyweightCapableTreeStructure<LighterASTNode> {
|
||||||
private val lighterAST = TreeBackedLighterAST(file.node)
|
private val lighterAST = TreeBackedLighterAST(file.node)
|
||||||
|
|||||||
Reference in New Issue
Block a user