hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp
Print this page
rev 611 : Merge
@@ -1,10 +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.
+ * 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,11 +419,11 @@
// 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; }
+ 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,11 +503,11 @@
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_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,11 +541,11 @@
// Allocation support
HeapWord* allocate(size_t size);
HeapWord* par_allocate(size_t size);
- oop promote(oop obj, size_t obj_size, oop* ref);
+ 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,11 +567,11 @@
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();
+ 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,10 +586,13 @@
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,11 +626,11 @@
// 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;
+ 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,16 +639,15 @@
// 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);
+ 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,