466 }
467
468 static const char* get_type(Klass* k) {
469 const char* type;
470 Klass* src_k;
471 if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space(k)) {
472 src_k = ArchiveBuilder::current()->get_source_addr(k);
473 } else {
474 src_k = k;
475 }
476
477 if (src_k->is_objArray_klass()) {
478 src_k = ObjArrayKlass::cast(src_k)->bottom_klass();
479 assert(!src_k->is_objArray_klass(), "sanity");
480 }
481
482 if (src_k->is_typeArray_klass()) {
483 type = "prim";
484 } else {
485 InstanceKlass* src_ik = InstanceKlass::cast(src_k);
486 if (src_ik->defined_by_boot_loader()) {
487 return "boot";
488 } else if (src_ik->defined_by_platform_loader()) {
489 return "plat";
490 } else if (src_ik->defined_by_app_loader()) {
491 return "app";
492 } else {
493 return "unreg";
494 }
495 }
496
497 return type;
498 }
499
500 void ConstantPool::remove_unshareable_entries() {
501 ResourceMark rm;
502 log_info(aot, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
503 for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused
504 int cp_tag = tag_at(cp_index).value();
505 switch (cp_tag) {
|
466 }
467
468 static const char* get_type(Klass* k) {
469 const char* type;
470 Klass* src_k;
471 if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space(k)) {
472 src_k = ArchiveBuilder::current()->get_source_addr(k);
473 } else {
474 src_k = k;
475 }
476
477 if (src_k->is_objArray_klass()) {
478 src_k = ObjArrayKlass::cast(src_k)->bottom_klass();
479 assert(!src_k->is_objArray_klass(), "sanity");
480 }
481
482 if (src_k->is_typeArray_klass()) {
483 type = "prim";
484 } else {
485 InstanceKlass* src_ik = InstanceKlass::cast(src_k);
486 if (CDSConfig::is_dumping_final_static_archive() && src_ik->class_loader_data() == nullptr) {
487 return "unreg";
488 }
489 if (src_ik->defined_by_boot_loader()) {
490 return "boot";
491 } else if (src_ik->defined_by_platform_loader()) {
492 return "plat";
493 } else if (src_ik->defined_by_app_loader()) {
494 return "app";
495 } else {
496 return "unreg";
497 }
498 }
499
500 return type;
501 }
502
503 void ConstantPool::remove_unshareable_entries() {
504 ResourceMark rm;
505 log_info(aot, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
506 for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused
507 int cp_tag = tag_at(cp_index).value();
508 switch (cp_tag) {
|