Allocate interrupted exception before re-acquiring lock
Allocating the monitor exception after acquiring the lock can cause
a deadlock in the following scenario:
Reference queue daemon interrupted from wait() on
ReferenceQueue.class. Tries to allocate exception and starts a GC
that blocks on WaitForGcToComplete.
Some other thread is already doing a GC, and tries to enqueue the
cleared refereneces. This deadlocks trying to lock Reference.class
in ReferenceQueue.add.
Bug:
27508829
Change-Id: Icbc18b6b8d1e906c3f7413810d6cefdda06eb921