equal
deleted
inserted
replaced
118 // to update the statistics. |
118 // to update the statistics. |
119 bool _count_pending_reset; |
119 bool _count_pending_reset; |
120 bool _timer_pending_reset; |
120 bool _timer_pending_reset; |
121 |
121 |
122 // Keep accurate times for potentially recursive class operations |
122 // Keep accurate times for potentially recursive class operations |
123 int _class_init_recursion_count; |
123 int _perf_recursion_counts[6]; |
124 int _class_verify_recursion_count; |
124 elapsedTimer _perf_timers[6]; |
125 int _class_link_recursion_count; |
|
126 |
125 |
127 // utility functions |
126 // utility functions |
128 void check_and_reset_count() { |
127 void check_and_reset_count() { |
129 if (!_count_pending_reset) return; |
128 if (!_count_pending_reset) return; |
130 _contended_enter_count = 0; |
129 _contended_enter_count = 0; |
163 void contended_enter_end() { _contended_enter_timer.stop(); check_and_reset_timer(); } |
162 void contended_enter_end() { _contended_enter_timer.stop(); check_and_reset_timer(); } |
164 |
163 |
165 void reset_count_stat() { _count_pending_reset = true; } |
164 void reset_count_stat() { _count_pending_reset = true; } |
166 void reset_time_stat() { _timer_pending_reset = true; } |
165 void reset_time_stat() { _timer_pending_reset = true; } |
167 |
166 |
168 int* class_init_recursion_count_addr() { return &_class_init_recursion_count; } |
167 int* perf_recursion_counts_addr() { return _perf_recursion_counts; } |
169 int* class_verify_recursion_count_addr() { return &_class_verify_recursion_count; } |
168 elapsedTimer* perf_timers_addr() { return _perf_timers; } |
170 int* class_link_recursion_count_addr() { return &_class_link_recursion_count; } |
|
171 }; |
169 }; |
172 |
170 |
173 // Thread snapshot to represent the thread state and statistics |
171 // Thread snapshot to represent the thread state and statistics |
174 class ThreadSnapshot : public CHeapObj { |
172 class ThreadSnapshot : public CHeapObj { |
175 private: |
173 private: |