Ok - I"m going to come down here and ask why?  We've talked this through before, but in a case where you literally have zero need for order guarantees, why is LHM so crucial?  Especially when allocations are so important on Android?

BTW, someone is doing a little experiment inside Google with this code (which is currently in our fork) to see how it behaves with CHM.  Since access (vs. mutation) is incredibly the norm under load, we're trying to see how much faster the parallelism of CHM is over even this read/write lock.  But this works, and we know it works, so we'll wait for numbers before that decision.