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