Mercurial > hg > graal-compiler
comparison src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp @ 12:6432c3bb6240
6668743: CMS: Consolidate block statistics reporting code
Summary: Reduce the amount of related code replication and improve pretty printing.
Reviewed-by: jmasa
author | ysr |
---|---|
date | Fri, 29 Feb 2008 14:42:56 -0800 |
parents | a61af66fc99e |
children | c70a245cad3a |
comparison
equal
deleted
inserted
replaced
11:3c1dbcaaab1d | 12:6432c3bb6240 |
---|---|
36 | 36 |
37 class Mutex; | 37 class Mutex; |
38 | 38 |
39 class FreeList VALUE_OBJ_CLASS_SPEC { | 39 class FreeList VALUE_OBJ_CLASS_SPEC { |
40 friend class CompactibleFreeListSpace; | 40 friend class CompactibleFreeListSpace; |
41 friend class printTreeCensusClosure; | |
41 FreeChunk* _head; // List of free chunks | 42 FreeChunk* _head; // List of free chunks |
42 FreeChunk* _tail; // Tail of list of free chunks | 43 FreeChunk* _tail; // Tail of list of free chunks |
43 size_t _size; // Size in Heap words of each chunks | 44 size_t _size; // Size in Heap words of each chunks |
44 ssize_t _count; // Number of entries in list | 45 ssize_t _count; // Number of entries in list |
45 size_t _hint; // next larger size list with a positive surplus | 46 size_t _hint; // next larger size list with a positive surplus |
61 | 62 |
62 // Initialize the allocation statistics. | 63 // Initialize the allocation statistics. |
63 protected: | 64 protected: |
64 void init_statistics(); | 65 void init_statistics(); |
65 void set_count(ssize_t v) { _count = v;} | 66 void set_count(ssize_t v) { _count = v;} |
66 void increment_count() { _count++; } | 67 void increment_count() { _count++; } |
67 void decrement_count() { | 68 void decrement_count() { |
68 _count--; | 69 _count--; |
69 assert(_count >= 0, "Count should not be negative"); } | 70 assert(_count >= 0, "Count should not be negative"); |
71 } | |
70 | 72 |
71 public: | 73 public: |
72 // Constructor | 74 // Constructor |
73 // Construct a list without any entries. | 75 // Construct a list without any entries. |
74 FreeList(); | 76 FreeList(); |
156 return &_allocation_stats; | 158 return &_allocation_stats; |
157 } | 159 } |
158 | 160 |
159 ssize_t desired() const { | 161 ssize_t desired() const { |
160 return _allocation_stats.desired(); | 162 return _allocation_stats.desired(); |
163 } | |
164 void set_desired(ssize_t v) { | |
165 assert_proper_lock_protection(); | |
166 _allocation_stats.set_desired(v); | |
161 } | 167 } |
162 void compute_desired(float inter_sweep_current, | 168 void compute_desired(float inter_sweep_current, |
163 float inter_sweep_estimate) { | 169 float inter_sweep_estimate) { |
164 assert_proper_lock_protection(); | 170 assert_proper_lock_protection(); |
165 _allocation_stats.compute_desired(_count, | 171 _allocation_stats.compute_desired(_count, |
296 void prepend(FreeList* fl); | 302 void prepend(FreeList* fl); |
297 | 303 |
298 // Verify that the chunk is in the list. | 304 // Verify that the chunk is in the list. |
299 // found. Return NULL if "fc" is not found. | 305 // found. Return NULL if "fc" is not found. |
300 bool verifyChunkInFreeLists(FreeChunk* fc) const; | 306 bool verifyChunkInFreeLists(FreeChunk* fc) const; |
307 | |
308 // Printing support | |
309 static void print_labels_on(outputStream* st, const char* c); | |
310 void print_on(outputStream* st, const char* c = NULL) const; | |
301 }; | 311 }; |