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,