54 char age_name[10];
55 jio_snprintf(age_name, sizeof(age_name), "%2.2d", age);
56 const char* cname = PerfDataManager::counter_name(bytes_ns, age_name);
57 _perf_sizes[age] = PerfDataManager::create_variable(SUN_GC, cname,
58 PerfData::U_Bytes,
59 CHECK);
60 }
61
62 const char* cname = PerfDataManager::counter_name(agetable_ns, "size");
63 PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_None,
64 table_size, CHECK);
65 }
66 }
67
68 void AgeTable::clear() {
69 for (size_t* p = sizes; p < sizes + table_size; ++p) {
70 *p = 0;
71 }
72 }
73
74 void AgeTable::merge(const AgeTable* subTable) {
75 for (int i = 0; i < table_size; i++) {
76 sizes[i]+= subTable->sizes[i];
77 }
78 }
79
80 uint AgeTable::compute_tenuring_threshold(size_t desired_survivor_size) {
81 uint result;
82
83 if (AlwaysTenure || NeverTenure) {
84 assert(MaxTenuringThreshold == 0 || MaxTenuringThreshold == markWord::max_age + 1,
85 "MaxTenuringThreshold should be 0 or markWord::max_age + 1, but is %u", MaxTenuringThreshold);
86 result = MaxTenuringThreshold;
87 } else {
88 size_t total = 0;
89 uint age = 1;
90 assert(sizes[0] == 0, "no objects with age zero should be recorded");
91 while (age < table_size) {
92 total += sizes[age];
93 // check if including objects of age 'age' made us pass the desired
|
54 char age_name[10];
55 jio_snprintf(age_name, sizeof(age_name), "%2.2d", age);
56 const char* cname = PerfDataManager::counter_name(bytes_ns, age_name);
57 _perf_sizes[age] = PerfDataManager::create_variable(SUN_GC, cname,
58 PerfData::U_Bytes,
59 CHECK);
60 }
61
62 const char* cname = PerfDataManager::counter_name(agetable_ns, "size");
63 PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_None,
64 table_size, CHECK);
65 }
66 }
67
68 void AgeTable::clear() {
69 for (size_t* p = sizes; p < sizes + table_size; ++p) {
70 *p = 0;
71 }
72 }
73
74 #ifndef PRODUCT
75 bool AgeTable::is_clear() {
76 size_t total = 0;
77 for (size_t* p = sizes; p < sizes + table_size; ++p) {
78 total += *p;
79 }
80 return total == 0;
81 }
82 #endif // !PRODUCT
83
84 void AgeTable::merge(const AgeTable* subTable) {
85 for (int i = 0; i < table_size; i++) {
86 sizes[i]+= subTable->sizes[i];
87 }
88 }
89
90 uint AgeTable::compute_tenuring_threshold(size_t desired_survivor_size) {
91 uint result;
92
93 if (AlwaysTenure || NeverTenure) {
94 assert(MaxTenuringThreshold == 0 || MaxTenuringThreshold == markWord::max_age + 1,
95 "MaxTenuringThreshold should be 0 or markWord::max_age + 1, but is %u", MaxTenuringThreshold);
96 result = MaxTenuringThreshold;
97 } else {
98 size_t total = 0;
99 uint age = 1;
100 assert(sizes[0] == 0, "no objects with age zero should be recorded");
101 while (age < table_size) {
102 total += sizes[age];
103 // check if including objects of age 'age' made us pass the desired
|