RFR(S): 7147724: G1: hang in SurrogateLockerThread::manipulatePLL
John Cuthbertson
john.cuthbertson at oracle.com
Fri Mar 9 23:54:30 UTC 2012
Hi Bengt,
Thanks for looking again. Replies inline....
On 03/09/12 02:25, Bengt Rutisson wrote:
>
> Hi John,
>
> I think I like this change, but either I am confused or you forgot to
> remove the "bool no_safepoint_check" from:
>
> G1CollectedHeap::humongous_obj_allocate_find_first()
> G1CollectedHeap::humongous_obj_allocate()
>
> Did you mean to remove it?
Yes I did mean to remove it. Done.
>
> Just a style comment on this piece of code:
>
> bool safepoint_check_flag = Mutex::_no_safepoint_check_flag;
> if (Thread::current()->is_Java_thread()) {
> safepoint_check_flag = !Mutex::_no_safepoint_check_flag;
> }
>
> I understand that we want to use Mutex::_no_safepoint_check_flag since
> it is defined. But since there is no Mutex::_safepoint_check_flag or
> similar I think we break the abstraction by doing
> "safepoint_check_flag = !Mutex::_no_safepoint_check_flag". This kind
> of exposes that we are dealing with a bool. So, given this I think I
> would prefer to change the code to just:
>
> safepoint_check_flag = Thread::current()->is_Java_thread();
OK. Done, but with a small difference. For Java threads we wish to pass
false so that we don't skip the safepoint check so I used "bool
no_safepoint_check_flag = !Thread::current()->is_Java_thread();" and can
then just pass in the value.
New webrev: http://cr.openjdk.java.net/~johnc/7147724/webrev.2/
Thanks,
JohnC
More information about the hotspot-gc-dev
mailing list