RFR (XXS): 7006810: G1: Introduce peace-of-mind checking in the Suspendible Thread Set
Joseph Provino
joseph.provino at oracle.com
Wed Apr 8 23:27:29 UTC 2015
On 4/6/2015 2:20 PM, Srinivas Ramakrishna wrote:
> Hi Joe --
Hi Ramki, nice to hear from you and thanks for the review.
>
> I am not terribly familiar with G1 code yet, but here's a suggestion:
>
> * rename the boolean field to "in_suspendible_thread_set" (or
> "suspendible_thread"), the corresponding setters and gettes to
> set_in_suspendible_thread_set(), clear_in_suspendible_thread_set(),
> and is_in_suspendible_thread_set(), or preferably:
> set_suspendible_thread(), clear_suspendible_thread() and
> is_suspendible_thread(). (I don't particularly like the set_...._set()
> naming.)
I changed the variable and the methods as you suggested. Much easier on
the eyes.
DEBUG_ONLY(bool _suspendible_thread;)
>
> Do we allow threads to recursively enter the suspendible thread set in
> nested fashion? I'm guessing we don't, in which case, you would
> use this information local to the thread to prevent/forbid such
> recursive entries or exits when it isn't part of the set, by asserting
> that the bit isn't set when a thread joins the set and never clear
> before a thread leaves the set. I understand that there's a scoped
> join/leave abstraction via SuspendibleThreadSetJoiner, but there also
> seem to be a bunch of naked join/leave calls, so the
> extra checking would likely be worthwhile.
This is a good question. If I put in checks in join / leave
void SuspendibleThreadSet::join() {
assert(Thread::current()->is_suspendible_thread() == false,
"Thread already joined");
void SuspendibleThreadSet::leave() {
//assert(Thread::current()->is_suspendible_thread(),
// "Thread not joined");
jprt hits the assert in join.
It doesn't seem right to call join if a thread is already joined.
Would it be correct to just return if trying to rejoin or trying to
leave when not joined?
What's there seems to be harmless but I can't be sure of that.
joe
>
> As Eric notes, you could make all the new fields/methods NOT_PRODUCT,
> but I am not too concerned about leaving them in product mode
> as well, since the frequency of transition to and from STS mode is
> probably fairly low, and the extra information may be useful for
> field serviceability. But I will let those more familiar with G1 opine
> more strongly on that.
>
> Looks good otherwise.
>
> Thanks!
> -- ramki (openjdk: ysr)
>
>
>
> On Mon, Apr 6, 2015 at 10:25 AM, Joseph Provino
> <joseph.provino at oracle.com <mailto:joseph.provino at oracle.com>> wrote:
>
> CR: https://bugs.openjdk.java.net/browse/JDK-7006810
>
> webrev: http://cr.openjdk.java.net/~jprovino/7006810/webrev.00
> <http://cr.openjdk.java.net/%7Ejprovino/7006810/webrev.00>
>
> test: jprt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20150408/68bfa096/attachment.htm>
More information about the hotspot-gc-dev
mailing list