< prev index next >

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

Print this page
rev 57079 : imported patch 8234796

*** 324,336 **** void ZHeap::set_soft_reference_policy(bool clear) { _reference_processor.set_soft_reference_policy(clear); } ! class ZRendezvousClosure : public ThreadClosure { public: ! virtual void do_thread(Thread* thread) {} }; void ZHeap::process_non_strong_references() { // Process Soft/Weak/Final/PhantomReferences _reference_processor.process_references(); --- 324,337 ---- void ZHeap::set_soft_reference_policy(bool clear) { _reference_processor.set_soft_reference_policy(clear); } ! class ZRendezvousClosure : public HandshakeOperation { public: ! ZRendezvousClosure() : HandshakeOperation("ZRendezvous") {} ! void do_thread(JavaThread* thread) {} }; void ZHeap::process_non_strong_references() { // Process Soft/Weak/Final/PhantomReferences _reference_processor.process_references();
*** 347,358 **** // logically null but not yet cleared. Then this oop gets cleared // by the reference processor and resurrection is unblocked. At // this point the mutator could see the unblocked state and pass // this invalid oop through the normal barrier path, which would // incorrectly try to mark the oop. ! ZRendezvousClosure cl; ! Handshake::execute(&cl); // Purge stale metadata and nmethods that were unlinked _unload.purge(); // Unblock resurrection of weak/phantom references --- 348,359 ---- // logically null but not yet cleared. Then this oop gets cleared // by the reference processor and resurrection is unblocked. At // this point the mutator could see the unblocked state and pass // this invalid oop through the normal barrier path, which would // incorrectly try to mark the oop. ! ZRendezvousClosure zr_hs; ! Handshake::execute(&zr_hs); // Purge stale metadata and nmethods that were unlinked _unload.purge(); // Unblock resurrection of weak/phantom references
< prev index next >