src/hotspot/share/gc/g1/g1HeapRegionEventSender.cpp
changeset 58003 a645b2f7bece
parent 50113 caf115bb98ad
--- a/src/hotspot/share/gc/g1/g1HeapRegionEventSender.cpp	Wed Sep 04 09:47:51 2019 +0200
+++ b/src/hotspot/share/gc/g1/g1HeapRegionEventSender.cpp	Wed Sep 04 09:47:55 2019 +0200
@@ -27,6 +27,7 @@
 #include "gc/g1/heapRegion.hpp"
 #include "g1HeapRegionEventSender.hpp"
 #include "jfr/jfrEvents.hpp"
+#include "runtime/vmThread.hpp"
 
 class DumpEventInfoClosure : public HeapRegionClosure {
 public:
@@ -41,9 +42,17 @@
   }
 };
 
+class VM_G1SendHeapRegionInfoEvents : public VM_Operation {
+  virtual void doit() {
+    DumpEventInfoClosure c;
+    G1CollectedHeap::heap()->heap_region_iterate(&c);
+  }
+  virtual VMOp_Type type() const { return VMOp_HeapIterateOperation; }
+};
 
 void G1HeapRegionEventSender::send_events() {
-  DumpEventInfoClosure c;
-
-  G1CollectedHeap::heap()->heap_region_iterate(&c);
+  if (UseG1GC) {
+    VM_G1SendHeapRegionInfoEvents op;
+    VMThread::execute(&op);
+  }
 }