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