< prev index next >
src/hotspot/share/gc/z/zMark.cpp
Print this page
rev 57079 : imported patch 8234796
*** 433,448 ****
bool flushed() const {
return _flushed;
}
};
bool ZMark::flush(bool at_safepoint) {
ZMarkFlushAndFreeStacksClosure cl(this);
if (at_safepoint) {
Threads::threads_do(&cl);
} else {
! Handshake::execute(&cl);
}
// Returns true if more work is available
return cl.flushed() || !_stripes.is_empty();
}
--- 433,459 ----
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 {
! ZMarkFlushAndFreeStacksHandshake zmf_hs(&cl);
! Handshake::execute(&zmf_hs);
}
// Returns true if more work is available
return cl.flushed() || !_stripes.is_empty();
}
< prev index next >