< prev index next >

src/share/vm/classfile/classLoaderData.cpp

Print this page




 477   }
 478 }
 479 
 480 // These anonymous class loaders are to contain classes used for JSR292
 481 ClassLoaderData* ClassLoaderData::anonymous_class_loader_data(oop loader, TRAPS) {
 482   // Add a new class loader data to the graph.
 483   return ClassLoaderDataGraph::add(loader, true, THREAD);
 484 }
 485 
 486 const char* ClassLoaderData::loader_name() {
 487   // Handles null class loader
 488   return SystemDictionary::loader_name(class_loader());
 489 }
 490 
 491 #ifndef PRODUCT
 492 // Define to dump klasses
 493 #undef CLD_DUMP_KLASSES
 494 
 495 void ClassLoaderData::dump(outputStream * const out) {
 496   ResourceMark rm;
 497   out->print("ClassLoaderData CLD: "PTR_FORMAT", loader: "PTR_FORMAT", loader_klass: "PTR_FORMAT" %s {",
 498       p2i(this), p2i((void *)class_loader()),
 499       p2i(class_loader() != NULL ? class_loader()->klass() : NULL), loader_name());
 500   if (claimed()) out->print(" claimed ");
 501   if (is_unloading()) out->print(" unloading ");
 502   out->print(" handles " INTPTR_FORMAT, p2i(handles()));
 503   out->cr();
 504   if (metaspace_or_null() != NULL) {
 505     out->print_cr("metaspace: " INTPTR_FORMAT, p2i(metaspace_or_null()));
 506     metaspace_or_null()->dump(out);
 507   } else {
 508     out->print_cr("metaspace: NULL");
 509   }
 510 
 511 #ifdef CLD_DUMP_KLASSES
 512   if (Verbose) {
 513     ResourceMark rm;
 514     Klass* k = _klasses;
 515     while (k != NULL) {
 516       out->print_cr("klass "PTR_FORMAT", %s, CT: %d, MUT: %d", k, k->name()->as_C_string(),
 517           k->has_modified_oops(), k->has_accumulated_modified_oops());
 518       assert(k != k->next_link(), "no loops!");
 519       k = k->next_link();
 520     }
 521   }
 522 #endif  // CLD_DUMP_KLASSES
 523 #undef CLD_DUMP_KLASSES
 524   if (_jmethod_ids != NULL) {
 525     Method::print_jmethod_ids(this, out);
 526   }
 527   out->print_cr("}");
 528 }
 529 #endif // PRODUCT
 530 
 531 void ClassLoaderData::verify() {
 532   oop cl = class_loader();
 533 
 534   guarantee(this == class_loader_data(cl) || is_anonymous(), "Must be the same");
 535   guarantee(cl != NULL || this == ClassLoaderData::the_null_class_loader_data() || is_anonymous(), "must be");
 536 




 477   }
 478 }
 479 
 480 // These anonymous class loaders are to contain classes used for JSR292
 481 ClassLoaderData* ClassLoaderData::anonymous_class_loader_data(oop loader, TRAPS) {
 482   // Add a new class loader data to the graph.
 483   return ClassLoaderDataGraph::add(loader, true, THREAD);
 484 }
 485 
 486 const char* ClassLoaderData::loader_name() {
 487   // Handles null class loader
 488   return SystemDictionary::loader_name(class_loader());
 489 }
 490 
 491 #ifndef PRODUCT
 492 // Define to dump klasses
 493 #undef CLD_DUMP_KLASSES
 494 
 495 void ClassLoaderData::dump(outputStream * const out) {
 496   ResourceMark rm;
 497   out->print("ClassLoaderData CLD: " PTR_FORMAT ", loader: " PTR_FORMAT ", loader_klass: " PTR_FORMAT " %s {",
 498       p2i(this), p2i((void *)class_loader()),
 499       p2i(class_loader() != NULL ? class_loader()->klass() : NULL), loader_name());
 500   if (claimed()) out->print(" claimed ");
 501   if (is_unloading()) out->print(" unloading ");
 502   out->print(" handles " INTPTR_FORMAT, p2i(handles()));
 503   out->cr();
 504   if (metaspace_or_null() != NULL) {
 505     out->print_cr("metaspace: " INTPTR_FORMAT, p2i(metaspace_or_null()));
 506     metaspace_or_null()->dump(out);
 507   } else {
 508     out->print_cr("metaspace: NULL");
 509   }
 510 
 511 #ifdef CLD_DUMP_KLASSES
 512   if (Verbose) {
 513     ResourceMark rm;
 514     Klass* k = _klasses;
 515     while (k != NULL) {
 516       out->print_cr("klass " PTR_FORMAT ", %s, CT: %d, MUT: %d", k, k->name()->as_C_string(),
 517           k->has_modified_oops(), k->has_accumulated_modified_oops());
 518       assert(k != k->next_link(), "no loops!");
 519       k = k->next_link();
 520     }
 521   }
 522 #endif  // CLD_DUMP_KLASSES
 523 #undef CLD_DUMP_KLASSES
 524   if (_jmethod_ids != NULL) {
 525     Method::print_jmethod_ids(this, out);
 526   }
 527   out->print_cr("}");
 528 }
 529 #endif // PRODUCT
 530 
 531 void ClassLoaderData::verify() {
 532   oop cl = class_loader();
 533 
 534   guarantee(this == class_loader_data(cl) || is_anonymous(), "Must be the same");
 535   guarantee(cl != NULL || this == ClassLoaderData::the_null_class_loader_data() || is_anonymous(), "must be");
 536 


< prev index next >