106 lt.print("purging class object from constraint for name %s," |
106 lt.print("purging class object from constraint for name %s," |
107 " loader list:", |
107 " loader list:", |
108 probe->name()->as_C_string()); |
108 probe->name()->as_C_string()); |
109 for (int i = 0; i < probe->num_loaders(); i++) { |
109 for (int i = 0; i < probe->num_loaders(); i++) { |
110 lt.print(" [%d]: %s", i, |
110 lt.print(" [%d]: %s", i, |
111 probe->loader_data(i)->loader_name()); |
111 probe->loader_data(i)->loader_name_and_id()); |
112 } |
112 } |
113 } |
113 } |
114 } |
114 } |
115 // Remove entries no longer alive from loader array |
115 // Remove entries no longer alive from loader array |
116 int n = 0; |
116 int n = 0; |
117 while (n < probe->num_loaders()) { |
117 while (n < probe->num_loaders()) { |
118 if (probe->loader_data(n)->is_unloading()) { |
118 if (probe->loader_data(n)->is_unloading()) { |
119 if (lt.is_enabled()) { |
119 if (lt.is_enabled()) { |
120 ResourceMark rm; |
120 ResourceMark rm; |
121 lt.print("purging loader %s from constraint for name %s", |
121 lt.print("purging loader %s from constraint for name %s", |
122 probe->loader_data(n)->loader_name(), |
122 probe->loader_data(n)->loader_name_and_id(), |
123 probe->name()->as_C_string() |
123 probe->name()->as_C_string() |
124 ); |
124 ); |
125 } |
125 } |
126 |
126 |
127 // Compact array |
127 // Compact array |
133 if (lt.is_enabled()) { |
133 if (lt.is_enabled()) { |
134 ResourceMark rm; |
134 ResourceMark rm; |
135 lt.print("new loader list:"); |
135 lt.print("new loader list:"); |
136 for (int i = 0; i < probe->num_loaders(); i++) { |
136 for (int i = 0; i < probe->num_loaders(); i++) { |
137 lt.print(" [%d]: %s", i, |
137 lt.print(" [%d]: %s", i, |
138 probe->loader_data(i)->loader_name()); |
138 probe->loader_data(i)->loader_name_and_id()); |
139 } |
139 } |
140 } |
140 } |
141 |
141 |
142 continue; // current element replaced, so restart without |
142 continue; // current element replaced, so restart without |
143 // incrementing n |
143 // incrementing n |
175 if (lt.is_enabled()) { |
175 if (lt.is_enabled()) { |
176 ResourceMark rm; |
176 ResourceMark rm; |
177 lt.print("Failed to add constraint for name: %s, loader[0]: %s," |
177 lt.print("Failed to add constraint for name: %s, loader[0]: %s," |
178 " loader[1]: %s, Reason: %s", |
178 " loader[1]: %s, Reason: %s", |
179 class_name->as_C_string(), |
179 class_name->as_C_string(), |
180 SystemDictionary::loader_name(class_loader1()), |
180 ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id(), |
181 SystemDictionary::loader_name(class_loader2()), |
181 ClassLoaderData::class_loader_data(class_loader2())->loader_name_and_id(), |
182 reason); |
182 reason); |
183 } |
183 } |
184 } |
184 } |
185 |
185 |
186 bool LoaderConstraintTable::add_entry(Symbol* class_name, |
186 bool LoaderConstraintTable::add_entry(Symbol* class_name, |
245 if (lt.is_enabled()) { |
245 if (lt.is_enabled()) { |
246 ResourceMark rm; |
246 ResourceMark rm; |
247 lt.print("adding new constraint for name: %s, loader[0]: %s," |
247 lt.print("adding new constraint for name: %s, loader[0]: %s," |
248 " loader[1]: %s", |
248 " loader[1]: %s", |
249 class_name->as_C_string(), |
249 class_name->as_C_string(), |
250 SystemDictionary::loader_name(class_loader1()), |
250 ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id(), |
251 SystemDictionary::loader_name(class_loader2()) |
251 ClassLoaderData::class_loader_data(class_loader2())->loader_name_and_id() |
252 ); |
252 ); |
253 } |
253 } |
254 } else if (*pp1 == *pp2) { |
254 } else if (*pp1 == *pp2) { |
255 /* constraint already imposed */ |
255 /* constraint already imposed */ |
256 if ((*pp1)->klass() == NULL) { |
256 if ((*pp1)->klass() == NULL) { |
258 if (lt.is_enabled()) { |
258 if (lt.is_enabled()) { |
259 ResourceMark rm; |
259 ResourceMark rm; |
260 lt.print("setting class object in existing constraint for" |
260 lt.print("setting class object in existing constraint for" |
261 " name: %s and loader %s", |
261 " name: %s and loader %s", |
262 class_name->as_C_string(), |
262 class_name->as_C_string(), |
263 SystemDictionary::loader_name(class_loader1()) |
263 ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id() |
264 ); |
264 ); |
265 } |
265 } |
266 } else { |
266 } else { |
267 assert((*pp1)->klass() == klass, "loader constraints corrupted"); |
267 assert((*pp1)->klass() == klass, "loader constraints corrupted"); |
268 } |
268 } |
289 if (lt.is_enabled()) { |
289 if (lt.is_enabled()) { |
290 ResourceMark rm; |
290 ResourceMark rm; |
291 lt.print("constraint check failed for name %s, loader %s: " |
291 lt.print("constraint check failed for name %s, loader %s: " |
292 "the presented class object differs from that stored", |
292 "the presented class object differs from that stored", |
293 name->as_C_string(), |
293 name->as_C_string(), |
294 SystemDictionary::loader_name(loader())); |
294 ClassLoaderData::class_loader_data(loader())->loader_name_and_id()); |
295 } |
295 } |
296 return false; |
296 return false; |
297 } else { |
297 } else { |
298 if (p && p->klass() == NULL) { |
298 if (p && p->klass() == NULL) { |
299 p->set_klass(k); |
299 p->set_klass(k); |
300 if (lt.is_enabled()) { |
300 if (lt.is_enabled()) { |
301 ResourceMark rm; |
301 ResourceMark rm; |
302 lt.print("updating constraint for name %s, loader %s, " |
302 lt.print("updating constraint for name %s, loader %s, " |
303 "by setting class object", |
303 "by setting class object", |
304 name->as_C_string(), |
304 name->as_C_string(), |
305 SystemDictionary::loader_name(loader())); |
305 ClassLoaderData::class_loader_data(loader())->loader_name_and_id()); |
306 } |
306 } |
307 } |
307 } |
308 return true; |
308 return true; |
309 } |
309 } |
310 } |
310 } |
351 if (lt.is_enabled()) { |
351 if (lt.is_enabled()) { |
352 ResourceMark rm; |
352 ResourceMark rm; |
353 lt.print("extending constraint for name %s by adding loader[%d]: %s %s", |
353 lt.print("extending constraint for name %s by adding loader[%d]: %s %s", |
354 p->name()->as_C_string(), |
354 p->name()->as_C_string(), |
355 num, |
355 num, |
356 SystemDictionary::loader_name(loader()), |
356 ClassLoaderData::class_loader_data(loader())->loader_name_and_id(), |
357 (p->klass() == NULL ? " and setting class object" : "") |
357 (p->klass() == NULL ? " and setting class object" : "") |
358 ); |
358 ); |
359 } |
359 } |
360 if (p->klass() == NULL) { |
360 if (p->klass() == NULL) { |
361 p->set_klass(klass); |
361 p->set_klass(klass); |
394 p1->name()->as_C_string() |
394 p1->name()->as_C_string() |
395 ); |
395 ); |
396 |
396 |
397 for (int i = 0; i < p1->num_loaders(); i++) { |
397 for (int i = 0; i < p1->num_loaders(); i++) { |
398 lt.print(" [%d]: %s", i, |
398 lt.print(" [%d]: %s", i, |
399 p1->loader_data(i)->loader_name()); |
399 p1->loader_data(i)->loader_name_and_id()); |
400 } |
400 } |
401 if (p1->klass() == NULL) { |
401 if (p1->klass() == NULL) { |
402 lt.print("... and setting class object"); |
402 lt.print("... and setting class object"); |
403 } |
403 } |
404 } |
404 } |