816 }
817
818 for (int i = 0; i < klasses()->length(); i++) {
819 const char* type;
820 const char* unlinked = "";
821 const char* kind = "";
822 const char* hidden = "";
823 const char* old = "";
824 const char* generated = "";
825 const char* aotlinked_msg = "";
826 const char* inited_msg = "";
827 Klass* k = get_buffered_addr(klasses()->at(i));
828 bool inited = false;
829 k->remove_java_mirror();
830 #ifdef _LP64
831 if (UseCompactObjectHeaders) {
832 Klass* requested_k = to_requested(k);
833 address narrow_klass_base = _requested_static_archive_bottom; // runtime encoding base == runtime mapping start
834 const int narrow_klass_shift = precomputed_narrow_klass_shift();
835 narrowKlass nk = CompressedKlassPointers::encode_not_null_without_asserts(requested_k, narrow_klass_base, narrow_klass_shift);
836 k->set_prototype_header(markWord::prototype().set_narrow_klass(nk));
837 }
838 #endif //_LP64
839 if (k->is_objArray_klass()) {
840 // InstanceKlass and TypeArrayKlass will in turn call remove_unshareable_info
841 // on their array classes.
842 num_obj_array_klasses ++;
843 type = "array";
844 } else if (k->is_typeArray_klass()) {
845 num_type_array_klasses ++;
846 type = "array";
847 k->remove_unshareable_info();
848 } else {
849 assert(k->is_instance_klass(), " must be");
850 InstanceKlass* ik = InstanceKlass::cast(k);
851 InstanceKlass* src_ik = get_source_addr(ik);
852 bool aotlinked = AOTClassLinker::is_candidate(src_ik);
853 inited = ik->has_aot_initialized_mirror();
854 ADD_COUNT(num_instance_klasses);
855 if (ik->is_hidden()) {
856 ADD_COUNT(num_hidden_klasses);
857 hidden = " hidden";
858 oop loader = k->class_loader();
859 if (loader == nullptr) {
860 type = "boot";
861 ADD_COUNT(num_boot_klasses);
862 } else if (loader == SystemDictionary::java_platform_loader()) {
863 type = "plat";
|
816 }
817
818 for (int i = 0; i < klasses()->length(); i++) {
819 const char* type;
820 const char* unlinked = "";
821 const char* kind = "";
822 const char* hidden = "";
823 const char* old = "";
824 const char* generated = "";
825 const char* aotlinked_msg = "";
826 const char* inited_msg = "";
827 Klass* k = get_buffered_addr(klasses()->at(i));
828 bool inited = false;
829 k->remove_java_mirror();
830 #ifdef _LP64
831 if (UseCompactObjectHeaders) {
832 Klass* requested_k = to_requested(k);
833 address narrow_klass_base = _requested_static_archive_bottom; // runtime encoding base == runtime mapping start
834 const int narrow_klass_shift = precomputed_narrow_klass_shift();
835 narrowKlass nk = CompressedKlassPointers::encode_not_null_without_asserts(requested_k, narrow_klass_base, narrow_klass_shift);
836 k->set_prototype_header_klass(nk);
837 }
838 #endif //_LP64
839 if (k->is_flatArray_klass()) {
840 num_obj_array_klasses ++;
841 type = "flat array";
842 } else if (k->is_refArray_klass()) {
843 num_obj_array_klasses ++;
844 type = "ref array";
845 } else if (k->is_objArray_klass()) {
846 // InstanceKlass and TypeArrayKlass will in turn call remove_unshareable_info
847 // on their array classes.
848 num_obj_array_klasses ++;
849 type = "obj array";
850 } else if (k->is_typeArray_klass()) {
851 num_type_array_klasses ++;
852 type = "array";
853 k->remove_unshareable_info();
854 } else {
855 assert(k->is_instance_klass(), " must be");
856 InstanceKlass* ik = InstanceKlass::cast(k);
857 InstanceKlass* src_ik = get_source_addr(ik);
858 bool aotlinked = AOTClassLinker::is_candidate(src_ik);
859 inited = ik->has_aot_initialized_mirror();
860 ADD_COUNT(num_instance_klasses);
861 if (ik->is_hidden()) {
862 ADD_COUNT(num_hidden_klasses);
863 hidden = " hidden";
864 oop loader = k->class_loader();
865 if (loader == nullptr) {
866 type = "boot";
867 ADD_COUNT(num_boot_klasses);
868 } else if (loader == SystemDictionary::java_platform_loader()) {
869 type = "plat";
|