hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp

Print this page
rev 611 : Merge

*** 1,10 **** #ifdef USE_PRAGMA_IDENT_HDR #pragma ident "@(#)compactibleFreeListSpace.hpp 1.91 07/05/05 17:05:45 JVM" #endif /* ! * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,10 ---- #ifdef USE_PRAGMA_IDENT_HDR #pragma ident "@(#)compactibleFreeListSpace.hpp 1.91 07/05/05 17:05:45 JVM" #endif /* ! * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 419,429 **** // Return the free chunk at the end of the space. If no such // chunk exists, return NULL. FreeChunk* find_chunk_at_end(); ! bool adaptive_freelists() { return _adaptive_freelists; } void set_collector(CMSCollector* collector) { _collector = collector; } // Support for parallelization of rescan and marking const size_t rescan_task_size() const { return _rescan_task_size; } --- 419,429 ---- // Return the free chunk at the end of the space. If no such // chunk exists, return NULL. FreeChunk* find_chunk_at_end(); ! bool adaptive_freelists() const { return _adaptive_freelists; } void set_collector(CMSCollector* collector) { _collector = collector; } // Support for parallelization of rescan and marking const size_t rescan_task_size() const { return _rescan_task_size; }
*** 503,513 **** CardTableModRefBS::PrecisionStyle precision, HeapWord* boundary); void blk_iterate(BlkClosure* cl); void blk_iterate_careful(BlkClosureCareful* cl); ! HeapWord* block_start(const void* p) const; HeapWord* block_start_careful(const void* p) const; size_t block_size(const HeapWord* p) const; size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const; bool block_is_obj(const HeapWord* p) const; bool obj_is_alive(const HeapWord* p) const; --- 503,513 ---- CardTableModRefBS::PrecisionStyle precision, HeapWord* boundary); void blk_iterate(BlkClosure* cl); void blk_iterate_careful(BlkClosureCareful* cl); ! HeapWord* block_start_const(const void* p) const; HeapWord* block_start_careful(const void* p) const; size_t block_size(const HeapWord* p) const; size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const; bool block_is_obj(const HeapWord* p) const; bool obj_is_alive(const HeapWord* p) const;
*** 541,551 **** // Allocation support HeapWord* allocate(size_t size); HeapWord* par_allocate(size_t size); ! oop promote(oop obj, size_t obj_size, oop* ref); void gc_prologue(); void gc_epilogue(); // This call is used by a containing CMS generation / collector // to inform the CFLS space that a sweep has been completed --- 541,551 ---- // Allocation support HeapWord* allocate(size_t size); HeapWord* par_allocate(size_t size); ! oop promote(oop obj, size_t obj_size); void gc_prologue(); void gc_epilogue(); // This call is used by a containing CMS generation / collector // to inform the CFLS space that a sweep has been completed
*** 567,577 **** size_t expansionSpaceRequired(size_t obj_size) const; FreeChunk* allocateScratch(size_t size); // returns true if either the small or large linear allocation buffer is empty. ! bool linearAllocationWouldFail(); // Adjust the chunk for the minimum size. This version is called in // most cases in CompactibleFreeListSpace methods. inline static size_t adjustObjectSize(size_t size) { return (size_t) align_object_size(MAX2(size, (size_t)MinChunkSize)); --- 567,577 ---- size_t expansionSpaceRequired(size_t obj_size) const; FreeChunk* allocateScratch(size_t size); // returns true if either the small or large linear allocation buffer is empty. ! bool linearAllocationWouldFail() const; // Adjust the chunk for the minimum size. This version is called in // most cases in CompactibleFreeListSpace methods. inline static size_t adjustObjectSize(size_t size) { return (size_t) align_object_size(MAX2(size, (size_t)MinChunkSize));
*** 586,595 **** --- 586,598 ---- virtual size_t minimum_free_block_size() const { return MinChunkSize; } void removeFreeChunkFromFreeLists(FreeChunk* chunk); void addChunkAndRepairOffsetTable(HeapWord* chunk, size_t size, bool coalesced); + // Support for decisions regarding concurrent collection policy + bool should_concurrent_collect() const; + // Support for compaction void prepare_for_compaction(CompactPoint* cp); void adjust_pointers(); void compact(); // reset the space to reflect the fact that a compaction of the
*** 623,633 **** // coalescing of smaller chucks, etc. The counts in the // census is used to make decisions on splitting and // coalescing of chunks during the sweep of garbage. // Print the statistics for the free lists. ! void printFLCensus(int sweepCt) const; // Statistics functions // Initialize census for lists before the sweep. void beginSweepFLCensus(float sweep_current, float sweep_estimate); --- 626,636 ---- // coalescing of smaller chucks, etc. The counts in the // census is used to make decisions on splitting and // coalescing of chunks during the sweep of garbage. // Print the statistics for the free lists. ! void printFLCensus(size_t sweep_count) const; // Statistics functions // Initialize census for lists before the sweep. void beginSweepFLCensus(float sweep_current, float sweep_estimate);
*** 636,651 **** // Set the hint for each of the free lists. void setFLHints(); // Clear the census for each of the free lists. void clearFLCensus(); // Perform functions for the census after the end of the sweep. ! void endSweepFLCensus(int sweepCt); // Return true if the count of free chunks is greater // than the desired number of free chunks. bool coalOverPopulated(size_t size); - // Record (for each size): // // split-births = #chunks added due to splits in (prev-sweep-end, // this-sweep-start) // split-deaths = #chunks removed for splits in (prev-sweep-end, --- 639,653 ---- // Set the hint for each of the free lists. void setFLHints(); // Clear the census for each of the free lists. void clearFLCensus(); // Perform functions for the census after the end of the sweep. ! void endSweepFLCensus(size_t sweep_count); // Return true if the count of free chunks is greater // than the desired number of free chunks. bool coalOverPopulated(size_t size); // Record (for each size): // // split-births = #chunks added due to splits in (prev-sweep-end, // this-sweep-start) // split-deaths = #chunks removed for splits in (prev-sweep-end,