RFR: JDK-8066442 - Add PS and ParOld support

Erik Helin erik.helin at oracle.com
Sat Dec 6 09:50:06 UTC 2014


Hi Staffan,

On 2014-12-05 23:14, Staffan Friberg wrote:
> Hi,
>
> Second part of adding PLAB events[1]. This patch adds support for
> Parallel Scavenge.
>
> Bug (sub-task): https://bugs.openjdk.java.net/browse/JDK-8066442
> Webrev: http://cr.openjdk.java.net/~sfriberg/JDK-8066442/webrev.00

+ if (lab != NULL &&
       gc_tracer->should_report_promotion_in_new_plab_event()) {
+        ...
+ } else if(gc_tracer->should_report_promotion_outside_plab_event()) {
+        ...
+ }

The logic is wrong here when:
- lab != NULL is true
- gc_tracer->should_report_promotion_in_new_plab_event() is false
- gc_tracer->should_report_promotion_outside_plab_event() is true

In this case, the first if expression will be false and the second will 
be true, so the code will send an PromotionOutsidePLAB event, even 
though the code just allocated a new PLAB. For this case, no event 
should have been sent.

You must either arrange the if statements like:
if (lab != NULL) {
   if (should_send_promotion_in_new_plab_event()) {
     ...
   }
} else if (should_send_promotion_outside_plab_event()) {
   ...
}

or like:
if (lab != NULL && should_send_promotion_in_new_plab_event()) {
   ...
} else if (lab == NULL && should_send_promotion_outside_plab_event()) {
   ...
}

Thanks,
Erik

> Thanks,
> Staffan
>
> [1] - (RFR: JDK-8055845 - Add trace event for promoted objects) -
> http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2014-December/011477.html
>
>


More information about the hotspot-gc-dev mailing list