< prev index next >

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Print this page

        

*** 3620,3630 **** Monitor* G1CodeCacheUnloadingTask::_lock = new Monitor(Mutex::leaf, "Code Cache Unload lock", false, Monitor::_safepoint_check_never); class G1KlassCleaningTask : public StackObj { BoolObjectClosure* _is_alive; ! volatile jint _clean_klass_tree_claimed; ClassLoaderDataGraphKlassIteratorAtomic _klass_iterator; public: G1KlassCleaningTask(BoolObjectClosure* is_alive) : _is_alive(is_alive), --- 3620,3630 ---- Monitor* G1CodeCacheUnloadingTask::_lock = new Monitor(Mutex::leaf, "Code Cache Unload lock", false, Monitor::_safepoint_check_never); class G1KlassCleaningTask : public StackObj { BoolObjectClosure* _is_alive; ! volatile int _clean_klass_tree_claimed; ClassLoaderDataGraphKlassIteratorAtomic _klass_iterator; public: G1KlassCleaningTask(BoolObjectClosure* is_alive) : _is_alive(is_alive),
*** 3636,3646 **** bool claim_clean_klass_tree_task() { if (_clean_klass_tree_claimed) { return false; } ! return Atomic::cmpxchg(1, (jint*)&_clean_klass_tree_claimed, 0) == 0; } InstanceKlass* claim_next_klass() { Klass* klass; do { --- 3636,3646 ---- bool claim_clean_klass_tree_task() { if (_clean_klass_tree_claimed) { return false; } ! return Atomic::cmpxchg(1, &_clean_klass_tree_claimed, 0) == 0; } InstanceKlass* claim_next_klass() { Klass* klass; do {
*** 3673,3692 **** } }; class G1ResolvedMethodCleaningTask : public StackObj { BoolObjectClosure* _is_alive; ! volatile jint _resolved_method_task_claimed; public: G1ResolvedMethodCleaningTask(BoolObjectClosure* is_alive) : _is_alive(is_alive), _resolved_method_task_claimed(0) {} bool claim_resolved_method_task() { if (_resolved_method_task_claimed) { return false; } ! return Atomic::cmpxchg(1, (jint*)&_resolved_method_task_claimed, 0) == 0; } // These aren't big, one thread can do it all. void work() { if (claim_resolved_method_task()) { --- 3673,3692 ---- } }; class G1ResolvedMethodCleaningTask : public StackObj { BoolObjectClosure* _is_alive; ! volatile int _resolved_method_task_claimed; public: G1ResolvedMethodCleaningTask(BoolObjectClosure* is_alive) : _is_alive(is_alive), _resolved_method_task_claimed(0) {} bool claim_resolved_method_task() { if (_resolved_method_task_claimed) { return false; } ! return Atomic::cmpxchg(1, &_resolved_method_task_claimed, 0) == 0; } // These aren't big, one thread can do it all. void work() { if (claim_resolved_method_task()) {
< prev index next >