4232 } |
4232 } |
4233 |
4233 |
4234 static jint num_ct_writes = 0; |
4234 static jint num_ct_writes = 0; |
4235 static jint num_ct_writes_filtered_in_hr = 0; |
4235 static jint num_ct_writes_filtered_in_hr = 0; |
4236 static jint num_ct_writes_filtered_null = 0; |
4236 static jint num_ct_writes_filtered_null = 0; |
4237 static jint num_ct_writes_filtered_pop = 0; |
|
4238 static G1CollectedHeap* g1 = NULL; |
4237 static G1CollectedHeap* g1 = NULL; |
4239 |
4238 |
4240 static Thread* count_ct_writes(void* filter_val, void* new_val) { |
4239 static Thread* count_ct_writes(void* filter_val, void* new_val) { |
4241 Atomic::inc(&num_ct_writes); |
4240 Atomic::inc(&num_ct_writes); |
4242 if (filter_val == NULL) { |
4241 if (filter_val == NULL) { |
4245 Atomic::inc(&num_ct_writes_filtered_null); |
4244 Atomic::inc(&num_ct_writes_filtered_null); |
4246 } else { |
4245 } else { |
4247 if (g1 == NULL) { |
4246 if (g1 == NULL) { |
4248 g1 = G1CollectedHeap::heap(); |
4247 g1 = G1CollectedHeap::heap(); |
4249 } |
4248 } |
4250 if ((HeapWord*)new_val < g1->popular_object_boundary()) { |
|
4251 Atomic::inc(&num_ct_writes_filtered_pop); |
|
4252 } |
|
4253 } |
4249 } |
4254 if ((num_ct_writes % 1000000) == 0) { |
4250 if ((num_ct_writes % 1000000) == 0) { |
4255 jint num_ct_writes_filtered = |
4251 jint num_ct_writes_filtered = |
4256 num_ct_writes_filtered_in_hr + |
4252 num_ct_writes_filtered_in_hr + |
4257 num_ct_writes_filtered_null + |
4253 num_ct_writes_filtered_null; |
4258 num_ct_writes_filtered_pop; |
|
4259 |
4254 |
4260 tty->print_cr("%d potential CT writes: %5.2f%% filtered\n" |
4255 tty->print_cr("%d potential CT writes: %5.2f%% filtered\n" |
4261 " (%5.2f%% intra-HR, %5.2f%% null, %5.2f%% popular).", |
4256 " (%5.2f%% intra-HR, %5.2f%% null).", |
4262 num_ct_writes, |
4257 num_ct_writes, |
4263 100.0*(float)num_ct_writes_filtered/(float)num_ct_writes, |
4258 100.0*(float)num_ct_writes_filtered/(float)num_ct_writes, |
4264 100.0*(float)num_ct_writes_filtered_in_hr/ |
4259 100.0*(float)num_ct_writes_filtered_in_hr/ |
4265 (float)num_ct_writes, |
4260 (float)num_ct_writes, |
4266 100.0*(float)num_ct_writes_filtered_null/ |
4261 100.0*(float)num_ct_writes_filtered_null/ |
4267 (float)num_ct_writes, |
|
4268 100.0*(float)num_ct_writes_filtered_pop/ |
|
4269 (float)num_ct_writes); |
4262 (float)num_ct_writes); |
4270 } |
4263 } |
4271 return Thread::current(); |
4264 return Thread::current(); |
4272 } |
4265 } |
4273 |
4266 |