Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp @ 1665:a93a9eda13f7
6962947: shared TaskQueue statistics
Reviewed-by: tonyp, ysr
author | jcoomes |
---|---|
date | Fri, 16 Jul 2010 21:33:21 -0700 |
parents | b2a00dd3117c |
children | 9d7a8ab3736b |
comparison
equal
deleted
inserted
replaced
1657:1a1ce2076047 | 1665:a93a9eda13f7 |
---|---|
39 // End move to some global location | 39 // End move to some global location |
40 | 40 |
41 class MutableSpace; | 41 class MutableSpace; |
42 class PSOldGen; | 42 class PSOldGen; |
43 class ParCompactionManager; | 43 class ParCompactionManager; |
44 | |
45 #define PS_PM_STATS 0 | |
46 | 44 |
47 class PSPromotionManager : public CHeapObj { | 45 class PSPromotionManager : public CHeapObj { |
48 friend class PSScavenge; | 46 friend class PSScavenge; |
49 friend class PSRefProcTaskExecutor; | 47 friend class PSRefProcTaskExecutor; |
50 private: | 48 private: |
52 static OopStarTaskQueueSet* _stack_array_depth; | 50 static OopStarTaskQueueSet* _stack_array_depth; |
53 static OopTaskQueueSet* _stack_array_breadth; | 51 static OopTaskQueueSet* _stack_array_breadth; |
54 static PSOldGen* _old_gen; | 52 static PSOldGen* _old_gen; |
55 static MutableSpace* _young_space; | 53 static MutableSpace* _young_space; |
56 | 54 |
57 #if PS_PM_STATS | 55 #if TASKQUEUE_STATS |
58 uint _total_pushes; | 56 size_t _masked_pushes; |
59 uint _masked_pushes; | 57 size_t _masked_steals; |
60 | 58 size_t _arrays_chunked; |
61 uint _overflow_pushes; | 59 size_t _array_chunks_processed; |
62 uint _max_overflow_length; | 60 |
63 | 61 void print_taskqueue_stats(uint i) const; |
64 uint _arrays_chunked; | 62 void print_local_stats(uint i) const; |
65 uint _array_chunks_processed; | |
66 | |
67 uint _total_steals; | |
68 uint _masked_steals; | |
69 | |
70 void print_stats(uint i); | |
71 static void print_stats(); | 63 static void print_stats(); |
72 #endif // PS_PM_STATS | 64 |
65 void reset_stats(); | |
66 #endif // TASKQUEUE_STATS | |
73 | 67 |
74 PSYoungPromotionLAB _young_lab; | 68 PSYoungPromotionLAB _young_lab; |
75 PSOldPromotionLAB _old_lab; | 69 PSOldPromotionLAB _old_lab; |
76 bool _young_gen_is_full; | 70 bool _young_gen_is_full; |
77 bool _old_gen_is_full; | 71 bool _old_gen_is_full; |
141 int start, int end); | 135 int start, int end); |
142 void process_array_chunk(oop old); | 136 void process_array_chunk(oop old); |
143 | 137 |
144 template <class T> void push_depth(T* p) { | 138 template <class T> void push_depth(T* p) { |
145 assert(depth_first(), "pre-condition"); | 139 assert(depth_first(), "pre-condition"); |
146 | |
147 #if PS_PM_STATS | |
148 ++_total_pushes; | |
149 int stack_length = claimed_stack_depth()->overflow_stack()->length(); | |
150 #endif // PS_PM_STATS | |
151 | |
152 claimed_stack_depth()->push(p); | 140 claimed_stack_depth()->push(p); |
153 | |
154 #if PS_PM_STATS | |
155 if (claimed_stack_depth()->overflow_stack()->length() != stack_length) { | |
156 ++_overflow_pushes; | |
157 if ((uint)stack_length + 1 > _max_overflow_length) { | |
158 _max_overflow_length = (uint)stack_length + 1; | |
159 } | |
160 } | |
161 #endif // PS_PM_STATS | |
162 } | 141 } |
163 | 142 |
164 void push_breadth(oop o) { | 143 void push_breadth(oop o) { |
165 assert(!depth_first(), "pre-condition"); | 144 assert(!depth_first(), "pre-condition"); |
166 | |
167 #if PS_PM_STATS | |
168 ++_total_pushes; | |
169 int stack_length = claimed_stack_breadth()->overflow_stack()->length(); | |
170 #endif // PS_PM_STATS | |
171 | |
172 claimed_stack_breadth()->push(o); | 145 claimed_stack_breadth()->push(o); |
173 | |
174 #if PS_PM_STATS | |
175 if (claimed_stack_breadth()->overflow_stack()->length() != stack_length) { | |
176 ++_overflow_pushes; | |
177 if ((uint)stack_length + 1 > _max_overflow_length) { | |
178 _max_overflow_length = (uint)stack_length + 1; | |
179 } | |
180 } | |
181 #endif // PS_PM_STATS | |
182 } | 146 } |
183 | 147 |
184 protected: | 148 protected: |
185 static OopStarTaskQueueSet* stack_array_depth() { return _stack_array_depth; } | 149 static OopStarTaskQueueSet* stack_array_depth() { return _stack_array_depth; } |
186 static OopTaskQueueSet* stack_array_breadth() { return _stack_array_breadth; } | 150 static OopTaskQueueSet* stack_array_breadth() { return _stack_array_breadth; } |
254 | 218 |
255 inline void flush_prefetch_queue(); | 219 inline void flush_prefetch_queue(); |
256 template <class T> inline void claim_or_forward_depth(T* p); | 220 template <class T> inline void claim_or_forward_depth(T* p); |
257 template <class T> inline void claim_or_forward_breadth(T* p); | 221 template <class T> inline void claim_or_forward_breadth(T* p); |
258 | 222 |
259 #if PS_PM_STATS | 223 TASKQUEUE_STATS_ONLY(inline void record_steal(StarTask& p);) |
260 void increment_steals(oop* p = NULL) { | |
261 _total_steals += 1; | |
262 if (p != NULL && is_oop_masked(p)) { | |
263 _masked_steals += 1; | |
264 } | |
265 } | |
266 #endif // PS_PM_STATS | |
267 }; | 224 }; |