Shenandoah Events

Aleksey Shipilev shade at redhat.com
Wed Jan 16 20:40:36 UTC 2019


Hi Ken,

On 1/16/19 9:25 PM, Ken Dobson wrote:
> Here's a new patch with all of the serialization moved to the
> shenandoahJfrSupport files. Please give it a review when you get the chance.

A brief look:

*) Not sure why some paths have JFR_ONLY, and some do not. Try to configure build with
--with-jvm-features=-jfr and build? Pretty sure you would need to put something like NO_JFR_RETURN
to send_jfr_region_transition_event declaration.

*) Include guards should not contain "_VM_" anymore, since the path does not include it:

+#ifndef SHARE_VM_GC_SHENANDOAH_SHENANDOAHJFRSUPPORT_HPP
+#define SHARE_VM_GC_SHENANDOAH_SHENANDOAHJFRSUPPORT_HPP

*) There are some whitespace changes in jfr/metadata/metadata.xml, are those intentional? Like these:

   </Type>
-
+
   <Event name="GCHeapSummary" category="Java Virtual Machine, GC, Heap" label="Heap Summary"
startTime="false">

...or these:

-  <Event name="DumpReason" category="Flight Recorder" label="Recording Reason"
-         description="Who requested the recording and why"
+  <Event name="DumpReason" category="Flight Recorder" label="Recording Reason"
+         description="Who requested the recording and why"

*) Keep the new line after #includes:

 #include "utilities/globalDefinitions.hpp"
-
+#if INCLUDE_SHENANDOAHGC
+#include "gc/shenandoah/shenandoahJfrSupport.hpp"
+#endif // INCLUDE_SHENANDOAHGC
 /**

*) Indenting, arguments should be at the same column:

+  JfrSerializer::register_serializer(TYPE_SHENANDOAHHEAPREGIONSTATE,
+                                      false,
+                                      true,
+                                      new ShenandoahHeapRegionStateConstant());

*) Pretty sure it would be cleaner if we introduced the set_state method instead, and do the event
there. For example:

    switch (_state) {
     case _empty_uncommitted:
       do_commit();
+      set_state(_empty_committed);
       return;
     default:

+void ShenandoahHeapRegion::set_state(RegionState to) {
+#if INCLUDE_JFR // probably?
+  EventShenandoahHeapRegionStateChange evt;
+  evt.set_index(region_number());
+  evt.set_start((uintptr_t)bottom());
+  evt.set_used(used());
+  evt.set_from(_state);
+  evt.set_to(to);
+  evt.commit();
+#endif
+  _state = to;
+}

Cheers,
-Aleksey


More information about the shenandoah-dev mailing list