501 }
502
503 static const char* get_type(Klass* k) {
504 const char* type;
505 Klass* src_k;
506 if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space(k)) {
507 src_k = ArchiveBuilder::current()->get_source_addr(k);
508 } else {
509 src_k = k;
510 }
511
512 if (src_k->is_objArray_klass()) {
513 src_k = ObjArrayKlass::cast(src_k)->bottom_klass();
514 assert(!src_k->is_objArray_klass(), "sanity");
515 }
516
517 if (src_k->is_typeArray_klass()) {
518 type = "prim";
519 } else {
520 InstanceKlass* src_ik = InstanceKlass::cast(src_k);
521 oop loader = src_ik->class_loader();
522 if (loader == nullptr) {
523 type = "boot";
524 } else if (loader == SystemDictionary::java_platform_loader()) {
525 type = "plat";
526 } else if (loader == SystemDictionary::java_system_loader()) {
527 type = "app";
528 } else {
529 type = "unreg";
530 }
531 }
532
533 return type;
534 }
535
536 void ConstantPool::remove_unshareable_entries() {
537 ResourceMark rm;
538 log_info(cds, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
539 for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused
540 int cp_tag = tag_at(cp_index).value();
|
501 }
502
503 static const char* get_type(Klass* k) {
504 const char* type;
505 Klass* src_k;
506 if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space(k)) {
507 src_k = ArchiveBuilder::current()->get_source_addr(k);
508 } else {
509 src_k = k;
510 }
511
512 if (src_k->is_objArray_klass()) {
513 src_k = ObjArrayKlass::cast(src_k)->bottom_klass();
514 assert(!src_k->is_objArray_klass(), "sanity");
515 }
516
517 if (src_k->is_typeArray_klass()) {
518 type = "prim";
519 } else {
520 InstanceKlass* src_ik = InstanceKlass::cast(src_k);
521 if (CDSConfig::is_dumping_final_static_archive() && src_ik->class_loader_data() == nullptr) {
522 return "unreg";
523 }
524 oop loader = src_ik->class_loader();
525 if (loader == nullptr) {
526 type = "boot";
527 } else if (loader == SystemDictionary::java_platform_loader()) {
528 type = "plat";
529 } else if (loader == SystemDictionary::java_system_loader()) {
530 type = "app";
531 } else {
532 type = "unreg";
533 }
534 }
535
536 return type;
537 }
538
539 void ConstantPool::remove_unshareable_entries() {
540 ResourceMark rm;
541 log_info(cds, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
542 for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused
543 int cp_tag = tag_at(cp_index).value();
|