RFR (S): 8228857: Refactor PlatformMonitor into PlatformMutex and PlatformMonitor

Kim Barrett kim.barrett at oracle.com
Thu Aug 8 01:59:09 UTC 2019


> On Aug 1, 2019, at 7:03 PM, David Holmes <david.holmes at oracle.com> wrote:
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8228857
> webrev: http://cr.openjdk.java.net/~dholmes/8228857/webrev/
> 
> As suggested by Per Liden when PlatformMonitor was introduced by JDK-8210832 we should refactor PlatformMonitor into a simpler PlatformMutex extended by PlatformMonitor. That would potentially allow other synchronization objects e.g. Zlocks, to be replaced by a suitable PlatformX class, and allows us to redefine JVM_RawMonitor support to use it (forthcoming change).
> 
> The refactoring would be obvious and simple if not for the macOS PThread allocation bug workaround. I had to change the Posix variant so that we only use the Impl helper class on macOS, so that we can separate the allocation of the pthread_mutex_t and pthread_cond_t. For macOS both get allocated in the PlatformMutex.
> 
> There are not actual usage changes in this RFE.
> 
> Testing: mach5 tiers 1-3
> 
> Thanks,
> David
> -----

PlatformMutex should be noncopyable on all platforms.

The inheritance runs the risk of destructor slicing, because the
PlatformMutex base class has a public non-virtual destructor. I don't
think we want to introduce a virtual destructor here. I don't know of
a solution that doesn't lose the inheritance relationship between the
classes. I don't know if that relationship is considered important.



More information about the hotspot-dev mailing list