Get rid of WeakReference-based logic in DirectMethodHandle::checkInitialized() 
and reimplement it with 
`Unsafe::ensureClassInitialized()`/`shouldBeInitialized()`. 

The key observation is that `Unsafe::ensureClassInitialized()` does not block 
the initializing thread. 

Also, removed `Unsafe::shouldBeInitialized()` in 
`DMH::shouldBeInitialized(MemberName)` to save on calling into the VM.
`Unsafe::ensureClassInitialized()` already has a fast-path check which checks 
whether the class is fully initialized or not.

Testing: tier1 - tier6

-------------

Commit messages:
 - Remove WeakReference-based logic

Changes: https://git.openjdk.java.net/jdk/pull/5258/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5258&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273000
  Stats: 35 lines in 1 file changed: 0 ins; 32 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5258.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5258/head:pull/5258

PR: https://git.openjdk.java.net/jdk/pull/5258

Reply via email to