diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/GlobalInlineContext.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/GlobalInlineContext.kt index da041aaebe7..3b155165690 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/GlobalInlineContext.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/GlobalInlineContext.kt @@ -9,15 +9,16 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.diagnostics.DiagnosticSink import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.utils.threadLocal import java.util.* class GlobalInlineContext(private val diagnostics: DiagnosticSink) { // Ordered set of declarations and inline calls being generated right now. // No call in it should point to a declaration that's before it in the stack. - private val inlineCallsAndDeclarations = LinkedList() - private val inlineDeclarationSet = mutableSetOf() + private val inlineCallsAndDeclarations by threadLocal { LinkedList() } + private val inlineDeclarationSet by threadLocal { mutableSetOf() } - private val typesUsedInInlineFunctions = LinkedList>() + private val typesUsedInInlineFunctions by threadLocal { LinkedList>() } fun enterDeclaration(descriptor: CallableDescriptor) { assert(descriptor.original !in inlineDeclarationSet) { "entered inlining cycle on $descriptor" }