1944 _promoInfo.startTrackingPromotions(); |
1944 _promoInfo.startTrackingPromotions(); |
1945 } |
1945 } |
1946 |
1946 |
1947 bool CompactibleFreeListSpace::no_allocs_since_save_marks() { |
1947 bool CompactibleFreeListSpace::no_allocs_since_save_marks() { |
1948 assert(_promoInfo.tracking(), "No preceding save_marks?"); |
1948 assert(_promoInfo.tracking(), "No preceding save_marks?"); |
1949 guarantee(SharedHeap::heap()->n_par_threads() == 0, |
1949 assert(SharedHeap::heap()->n_par_threads() == 0, |
1950 "Shouldn't be called (yet) during parallel part of gc."); |
1950 "Shouldn't be called if using parallel gc."); |
1951 return _promoInfo.noPromotions(); |
1951 return _promoInfo.noPromotions(); |
1952 } |
1952 } |
1953 |
1953 |
1954 #define CFLS_OOP_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \ |
1954 #define CFLS_OOP_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \ |
1955 \ |
1955 \ |
2567 } |
2567 } |
2568 } |
2568 } |
2569 |
2569 |
2570 HeapWord* CFLS_LAB::alloc(size_t word_sz) { |
2570 HeapWord* CFLS_LAB::alloc(size_t word_sz) { |
2571 FreeChunk* res; |
2571 FreeChunk* res; |
2572 guarantee(word_sz == _cfls->adjustObjectSize(word_sz), "Error"); |
2572 assert(word_sz == _cfls->adjustObjectSize(word_sz), "Error"); |
2573 if (word_sz >= CompactibleFreeListSpace::IndexSetSize) { |
2573 if (word_sz >= CompactibleFreeListSpace::IndexSetSize) { |
2574 // This locking manages sync with other large object allocations. |
2574 // This locking manages sync with other large object allocations. |
2575 MutexLockerEx x(_cfls->parDictionaryAllocLock(), |
2575 MutexLockerEx x(_cfls->parDictionaryAllocLock(), |
2576 Mutex::_no_safepoint_check_flag); |
2576 Mutex::_no_safepoint_check_flag); |
2577 res = _cfls->getChunkFromDictionaryExact(word_sz); |
2577 res = _cfls->getChunkFromDictionaryExact(word_sz); |