package scala.reflect package runtime private[reflect] trait Gil { self: SymbolTable => // fixme... please... // there are the following avenues of optimization we discussed with Roland: // 1) replace PackageScope locks with ConcurrentHashMap, because PackageScope materializers seem to be idempotent // 2) unlock unpickling completers by verifying that they are idempotent or moving non-idempotent parts // 3) remove the necessity in global state for isSubType private lazy val gil = new java.util.concurrent.locks.ReentrantLock @inline final def gilSynchronized[T](body: => T): T = { if (isCompilerUniverse) body else { try { gil.lock() body } finally { gil.unlock() } } } }