COMPILER
The one thread the compiler runs on. Its FIR caches are single-threaded and nothing locks them: every caller is a task here, run in submission order — warmup first (startBackgroundWarmup), then each eval's compile. One thread for the life of the process, too: every thread that looks a class up through the compiler leaves an entry, for good, in a cache nothing ever disposes (KotlinBinaryClassCache).
Nothing the warmup waits on may be queued here: it heads the queue, so it would be waiting on itself. An Executor, not an ExecutorService: shutdownNow() interrupts, and PlainEngine.compile says why that thread must never be interrupted.