5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 // ConcurrentMarkSweepGeneration is in support of a concurrent 26 // mark-sweep old generation in the Detlefs-Printezis--Boehm-Demers-Schenker 27 // style. We assume, for now, that this generation is always the 28 // seniormost generation (modulo the PermGeneration), and for simplicity 29 // in the first implementation, that this generation is a single compactible 30 // space. Neither of these restrictions appears essential, and will be 31 // relaxed in the future when more time is available to implement the 32 // greater generality (and there's a need for it). 33 // 34 // Concurrent mode failures are currently handled by 35 // means of a sliding mark-compact. 36 37 class CMSAdaptiveSizePolicy; 38 class CMSConcMarkingTask; 39 class CMSGCAdaptivePolicyCounters; 40 class ConcurrentMarkSweepGeneration; 41 class ConcurrentMarkSweepPolicy; 42 class ConcurrentMarkSweepThread; 43 class CompactibleFreeListSpace; 44 class FreeChunk; 1864 CMSBitMap* _dead_bit_map; 1865 public: 1866 MarkDeadObjectsClosure(const CMSCollector* collector, 1867 const CompactibleFreeListSpace* sp, 1868 CMSBitMap *live_bit_map, 1869 CMSBitMap *dead_bit_map) : 1870 _collector(collector), 1871 _sp(sp), 1872 _live_bit_map(live_bit_map), 1873 _dead_bit_map(dead_bit_map) {} 1874 size_t do_blk(HeapWord* addr); 1875 }; 1876 1877 class TraceCMSMemoryManagerStats : public TraceMemoryManagerStats { 1878 1879 public: 1880 TraceCMSMemoryManagerStats(CMSCollector::CollectorState phase); 1881 TraceCMSMemoryManagerStats(); 1882 }; 1883 | 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP 26 #define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP 27 28 #include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp" 29 #include "gc_implementation/shared/gSpaceCounters.hpp" 30 #include "gc_implementation/shared/gcStats.hpp" 31 #include "gc_implementation/shared/generationCounters.hpp" 32 #include "memory/generation.hpp" 33 #include "runtime/mutexLocker.hpp" 34 #include "runtime/virtualspace.hpp" 35 #include "services/memoryService.hpp" 36 #include "utilities/bitMap.inline.hpp" 37 #include "utilities/taskqueue.hpp" 38 #include "utilities/yieldingWorkgroup.hpp" 39 40 // ConcurrentMarkSweepGeneration is in support of a concurrent 41 // mark-sweep old generation in the Detlefs-Printezis--Boehm-Demers-Schenker 42 // style. We assume, for now, that this generation is always the 43 // seniormost generation (modulo the PermGeneration), and for simplicity 44 // in the first implementation, that this generation is a single compactible 45 // space. Neither of these restrictions appears essential, and will be 46 // relaxed in the future when more time is available to implement the 47 // greater generality (and there's a need for it). 48 // 49 // Concurrent mode failures are currently handled by 50 // means of a sliding mark-compact. 51 52 class CMSAdaptiveSizePolicy; 53 class CMSConcMarkingTask; 54 class CMSGCAdaptivePolicyCounters; 55 class ConcurrentMarkSweepGeneration; 56 class ConcurrentMarkSweepPolicy; 57 class ConcurrentMarkSweepThread; 58 class CompactibleFreeListSpace; 59 class FreeChunk; 1879 CMSBitMap* _dead_bit_map; 1880 public: 1881 MarkDeadObjectsClosure(const CMSCollector* collector, 1882 const CompactibleFreeListSpace* sp, 1883 CMSBitMap *live_bit_map, 1884 CMSBitMap *dead_bit_map) : 1885 _collector(collector), 1886 _sp(sp), 1887 _live_bit_map(live_bit_map), 1888 _dead_bit_map(dead_bit_map) {} 1889 size_t do_blk(HeapWord* addr); 1890 }; 1891 1892 class TraceCMSMemoryManagerStats : public TraceMemoryManagerStats { 1893 1894 public: 1895 TraceCMSMemoryManagerStats(CMSCollector::CollectorState phase); 1896 TraceCMSMemoryManagerStats(); 1897 }; 1898 1899 1900 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP |