Lines Matching refs:fc
8056 FreeChunk* fc = (FreeChunk*) freeFinger;
8057 assert(fc->is_free(), "A chunk on the free list should be free.");
8058 assert(fc->size() > 0, "Free range should have a size");
8059 assert(_sp->verify_chunk_in_free_list(fc), "Chunk is not in free lists");
8092 FreeChunk* fc = (FreeChunk*)addr;
8129 if (fc->is_free()) {
8131 res = fc->size();
8132 do_already_free_chunk(fc);
8142 assert(res == fc->size() || ((HeapWord*)fc) + res >= _limit,
8148 NOT_PRODUCT(_last_fc = fc;)
8151 res = do_garbage_chunk(fc);
8159 res = do_live_chunk(fc);
8212 void SweepClosure::do_already_free_chunk(FreeChunk* fc) {
8213 const size_t size = fc->size();
8216 if (CMSTestInFreeList && !fc->cantCoalesce()) {
8217 assert(_sp->verify_chunk_in_free_list(fc),
8222 HeapWord* const addr = (HeapWord*) fc;
8230 if (!fc->cantCoalesce()) {
8234 do_post_free_or_garbage_chunk(fc, size);
8259 print_free_block_coalesced(fc);
8261 gclog_or_tty->print(" -- pick up free block 0x%x (%d)\n", fc, size);
8264 _sp->removeFreeChunkFromFreeLists(fc);
8286 if (inFreeRange()) lookahead_and_flush(fc, size);
8301 size_t SweepClosure::do_garbage_chunk(FreeChunk* fc) {
8305 HeapWord* const addr = (HeapWord*) fc;
8313 do_post_free_or_garbage_chunk(fc, size);
8323 gclog_or_tty->print(" -- pick up garbage 0x%x (%d) \n", fc, size);
8350 if (inFreeRange()) lookahead_and_flush(fc, size);
8354 size_t SweepClosure::do_live_chunk(FreeChunk* fc) {
8355 HeapWord* addr = (HeapWord*) fc;
8419 void SweepClosure::do_post_free_or_garbage_chunk(FreeChunk* fc,
8423 const bool fcInFreeLists = fc->is_free();
8425 assert((HeapWord*)fc <= _limit, "sweep invariant");
8427 assert(_sp->verify_chunk_in_free_list(fc), "free chunk is not in free lists");
8431 gclog_or_tty->print_cr(" -- pick up another chunk at 0x%x (%d)", fc, chunkSize);
8434 HeapWord* const fc_addr = (HeapWord*) fc;
8491 assert(fc->size() == chunkSize,
8493 _sp->removeFreeChunkFromFreeLists(fc);
8496 print_free_block_coalesced(fc);
8507 initialize_free_range((HeapWord*)fc, fcInFreeLists);
8523 void SweepClosure::lookahead_and_flush(FreeChunk* fc, size_t chunk_size) {
8525 HeapWord* const eob = ((HeapWord*)fc) + chunk_size;
8528 " when examining fc = " PTR_FORMAT "(" SIZE_FORMAT ")",
8529 _limit, _sp->bottom(), _sp->end(), fc, chunk_size));
8531 assert(eob == _limit || fc->is_free(), "Only a free chunk should allow us to cross over the limit");
8536 _limit, fc, eob, _sp->bottom(), _sp->end());
8553 FreeChunk* fc = (FreeChunk*) chunk;
8554 fc->set_size(size);
8555 assert(!_sp->verify_chunk_in_free_list(fc),
8629 bool debug_verify_chunk_in_free_list(FreeChunk* fc) {
8630 return debug_cms_space->verify_chunk_in_free_list(fc);
8634 void SweepClosure::print_free_block_coalesced(FreeChunk* fc) const {
8637 fc, fc->size());