< prev index next >

src/hotspot/share/code/nmethod.cpp

Print this page

        

*** 1659,1670 **** // Even if it is the end of the linked list, it will have a non-null link value, // as long as it is on the list. // This code must be MP safe, because it is used from parallel GC passes. bool nmethod::test_set_oops_do_mark() { assert(nmethod::oops_do_marking_is_active(), "oops_do_marking_prologue must be called"); ! nmethod* observed_mark_link = _oops_do_mark_link; ! if (observed_mark_link == NULL) { // Claim this nmethod for this thread to mark. if (Atomic::cmpxchg(NMETHOD_SENTINEL, &_oops_do_mark_link, (nmethod*)NULL) == NULL) { // Atomically append this nmethod (now claimed) to the head of the list: nmethod* observed_mark_nmethods = _oops_do_mark_nmethods; for (;;) { --- 1659,1669 ---- // Even if it is the end of the linked list, it will have a non-null link value, // as long as it is on the list. // This code must be MP safe, because it is used from parallel GC passes. bool nmethod::test_set_oops_do_mark() { assert(nmethod::oops_do_marking_is_active(), "oops_do_marking_prologue must be called"); ! if (_oops_do_mark_link == NULL) { // Claim this nmethod for this thread to mark. if (Atomic::cmpxchg(NMETHOD_SENTINEL, &_oops_do_mark_link, (nmethod*)NULL) == NULL) { // Atomically append this nmethod (now claimed) to the head of the list: nmethod* observed_mark_nmethods = _oops_do_mark_nmethods; for (;;) {
< prev index next >