< 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 >