RFR(S): 8009536: G1: Apache Lucene hang during reference processing

John Cuthbertson john.cuthbertson at oracle.com
Wed Mar 13 19:04:11 UTC 2013


Hi Everyone,

Slight correction...

On 3/13/2013 10:57 AM, John Cuthbertson wrote:
>
> I think we can get rid of the do_stealing parameter - it's always the 
> negation of the is_serial parameter and I like the idea of making it a 
> local. How about that? For example
>
> void CMTask::do_marking_step(double ms, bool do_termination, bool 
> is_serial) {
>   // It does not make sense to allow stealing when called serially.
>   bool do_stealing = !is_serial;

After going through the cases enumerated by Bengt (thanks for doing that 
BTW), the correct conditions where stealing should be enabled are:

bool do_stealing = !is_serial && do_termination;

The rationale is that we should check to see if there's anything to 
steal if we're about to enter termination protocol (and we're not 
serial). In the case when do_termination is false (the keep_alive 
closure) we want to get back, as quickly as we can, to processing 
references after the intermediate drain.

New webrev soon.

Thanks,

JohnC



More information about the hotspot-gc-dev mailing list