1944 } else {
1945 // We failed. Retry with offending CAS result.
1946 my_cur = cas_result;
1947 }
1948 }
1949 }
1950
1951 bool ParallelObjectSynchronizerIterator::parallel_oops_do(OopClosure* f) {
1952 PaddedEnd<ObjectMonitor>* block = (PaddedEnd<ObjectMonitor>*)claim();
1953 if (block != NULL) {
1954 for (int i = 1; i < ObjectSynchronizer::_BLOCKSIZE; i++) {
1955 ObjectMonitor* mid = (ObjectMonitor *)&block[i];
1956 if (mid->object() != NULL) {
1957 f->do_oop((oop*)mid->object_addr());
1958 }
1959 }
1960 return true;
1961 }
1962 return false;
1963 }
|
1944 } else {
1945 // We failed. Retry with offending CAS result.
1946 my_cur = cas_result;
1947 }
1948 }
1949 }
1950
1951 bool ParallelObjectSynchronizerIterator::parallel_oops_do(OopClosure* f) {
1952 PaddedEnd<ObjectMonitor>* block = (PaddedEnd<ObjectMonitor>*)claim();
1953 if (block != NULL) {
1954 for (int i = 1; i < ObjectSynchronizer::_BLOCKSIZE; i++) {
1955 ObjectMonitor* mid = (ObjectMonitor *)&block[i];
1956 if (mid->object() != NULL) {
1957 f->do_oop((oop*)mid->object_addr());
1958 }
1959 }
1960 return true;
1961 }
1962 return false;
1963 }
1964
1965 void ObjectSynchronizer::list_oops_do(ObjectMonitor* list, OopClosure* f) {
1966 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
1967 ObjectMonitor* mid;
1968 for (mid = list; mid != NULL; mid = mid->FreeNext) {
1969 if (mid->object() != NULL) {
1970 f->do_oop((oop*)mid->object_addr());
1971 }
1972 }
1973 }
1974
1975 void ObjectSynchronizer::thread_local_used_oops_do(Thread* thread, OopClosure* f) {
1976 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
1977 list_oops_do(thread->omInUseList, f);
1978 }
1979
1980 void ObjectSynchronizer::global_used_oops_do(OopClosure* f) {
1981 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
1982 list_oops_do(gOmInUseList, f);
1983 }
|