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