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