RFR(M): 8039147: Cleanup SuspendibleThreadSet

Mikael Gerdin mikael.gerdin at oracle.com
Wed Apr 9 12:23:27 UTC 2014


Per,

On Tuesday 08 April 2014 13.32.23 Per Liden wrote:
> Hi,
> 
> Here's a attempt to cleanup SuspendibleThreadSet that I'd like to get
> some reviews on.
> 
> Webrev: http://cr.openjdk.java.net/~pliden/8039147/webrev.0/

The comment at the top of suspendibleThreadSet.hpp mentions 
safepoint_synchronize() and safepoint_desyncrhonize() but you removed the 
prefix from these functions.

Otherwise the change looks good.

/Mikael

> Bug: https://bugs.openjdk.java.net/browse/JDK-8039147
> 
> Summary:
> 
> * The function of SuspendibleThreadSet is completely unchanged. Still
> does the same thing, same semantics, same users, etc.
> 
> * SuspendibleThreadSet is broken out from concurrentGCThread.hpp/cpp
> into separate files. The relation ship with ConcurrentGCThread is a bit
> artificial as SuspendibleThreadSet is used by other threads as well e.g.
> SharedHeap's FlexibleWorkGang.
> 
> * There's currently two ways of using SuspendibleThreadSet, depending on
> which context you're in; 1) through direct use of the static _sts member
> in ConcurrentGCThread and 2) via the static stsXXXX() functions exposed
> by ConcurrentGCThread. With this patch there's only one interface, which
> is exposed as static functions on the SuspendibleThreadSet class itself.
> 
> * I adjusted the names of some of the fields in SuspendibleThreadSet,
> which didn't quite make sense to me. For example, _async is now
> _nthreads since it's a counter of number of threads currently in the
> thread set.
> 
> * The should_yield() and yield() functions on ConcurrentGCThread (and
> it's subclasses) where removed, since they were never used. There was
> one exception here though, which was concurrentMarkThread::yield(), but
> it just does a direct call to SuspendibleThreadSet's yield() so that's
> just an useless indirection.
> 
> * SuspendibleThreadSetJoiner is introduced to replace code like this:
> 
> if (....) {
>     _sts.join();
>     <do something>
>     _sts.leave();
> }
> 
> with code like this:
> 
> if (....) {
>     SuspendibleThreadSetJoiner sts;
>     <do something>
> }
> 
> cheers,
> /Per




More information about the hotspot-gc-dev mailing list