< prev index next >

src/hotspot/share/gc/z/zMark.cpp

Print this page
rev 57079 : imported patch 8234796

@@ -433,16 +433,27 @@
   bool flushed() const {
     return _flushed;
   }
 };
 
+class ZMarkFlushAndFreeStacksHandshake : public HandshakeOperation {
+  ZMarkFlushAndFreeStacksClosure* _cl;
+public:
+  ZMarkFlushAndFreeStacksHandshake(ZMarkFlushAndFreeStacksClosure* cl)
+    : HandshakeOperation("ZMarkFlushAndFreeStacks"), _cl(cl) {}
+  void do_thread(JavaThread* jt) {
+    _cl->do_thread(jt);
+  }
+};
+
 bool ZMark::flush(bool at_safepoint) {
   ZMarkFlushAndFreeStacksClosure cl(this);
   if (at_safepoint) {
     Threads::threads_do(&cl);
   } else {
-    Handshake::execute(&cl);
+    ZMarkFlushAndFreeStacksHandshake zmf_hs(&cl);
+    Handshake::execute(&zmf_hs);
   }
 
   // Returns true if more work is available
   return cl.flushed() || !_stripes.is_empty();
 }
< prev index next >