< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

 522   return vtable_indices;
 523 }
 524 
 525 
 526 InstanceKlass::InstanceKlass() {
 527   assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
 528 }
 529 
 530 InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, ReferenceType reference_type) :
 531   Klass(kind),
 532   _nest_members(nullptr),
 533   _nest_host(nullptr),
 534   _permitted_subclasses(nullptr),
 535   _record_components(nullptr),
 536   _static_field_size(parser.static_field_size()),
 537   _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())),
 538   _itable_len(parser.itable_size()),
 539   _nest_host_index(0),
 540   _init_state(allocated),
 541   _reference_type(reference_type),
 542   _init_thread(nullptr)

 543 {
 544   set_vtable_length(parser.vtable_size());
 545   set_access_flags(parser.access_flags());
 546   if (parser.is_hidden()) set_is_hidden();
 547   set_layout_helper(Klass::instance_layout_helper(parser.layout_size(),
 548                                                     false));
 549 
 550   assert(nullptr == _methods, "underlying memory not zeroed?");
 551   assert(is_instance_klass(), "is layout incorrect?");
 552   assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
 553 }
 554 
 555 void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data,
 556                                        Array<Method*>* methods) {
 557   if (methods != nullptr && methods != Universe::the_empty_method_array() &&
 558       !methods->in_aot_cache()) {
 559     for (int i = 0; i < methods->length(); i++) {
 560       Method* method = methods->at(i);
 561       if (method == nullptr) continue;  // maybe null if error processing
 562       // Only want to delete methods that are not executing for RedefineClasses.

3836      _st->cr();
3837    }
3838 }
3839 
3840 
3841 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3842   Klass::oop_print_on(obj, st);
3843 
3844   if (this == vmClasses::String_klass()) {
3845     typeArrayOop value  = java_lang_String::value(obj);
3846     juint        length = java_lang_String::length(obj);
3847     if (value != nullptr &&
3848         value->is_typeArray() &&
3849         length <= (juint) value->length()) {
3850       st->print(BULLET"string: ");
3851       java_lang_String::print(obj, st);
3852       st->cr();
3853     }
3854   }
3855 
3856   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj));
3857   FieldPrinter print_field(st, obj);
3858   print_nonstatic_fields(&print_field);
3859 
3860   if (this == vmClasses::Class_klass()) {
3861     st->print(BULLET"signature: ");
3862     java_lang_Class::print_signature(obj, st);
3863     st->cr();
3864     Klass* real_klass = java_lang_Class::as_Klass(obj);
3865     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3866       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3867       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3868     }
3869   } else if (this == vmClasses::MethodType_klass()) {
3870     st->print(BULLET"signature: ");
3871     java_lang_invoke_MethodType::print_signature(obj, st);
3872     st->cr();
3873   }
3874 }
3875 
3876 #ifndef PRODUCT

 522   return vtable_indices;
 523 }
 524 
 525 
 526 InstanceKlass::InstanceKlass() {
 527   assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
 528 }
 529 
 530 InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, ReferenceType reference_type) :
 531   Klass(kind),
 532   _nest_members(nullptr),
 533   _nest_host(nullptr),
 534   _permitted_subclasses(nullptr),
 535   _record_components(nullptr),
 536   _static_field_size(parser.static_field_size()),
 537   _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())),
 538   _itable_len(parser.itable_size()),
 539   _nest_host_index(0),
 540   _init_state(allocated),
 541   _reference_type(reference_type),
 542   _init_thread(nullptr),
 543   _hash_offset(parser.hash_offset())
 544 {
 545   set_vtable_length(parser.vtable_size());
 546   set_access_flags(parser.access_flags());
 547   if (parser.is_hidden()) set_is_hidden();
 548   set_layout_helper(Klass::instance_layout_helper(parser.layout_size(),
 549                                                     false));
 550 
 551   assert(nullptr == _methods, "underlying memory not zeroed?");
 552   assert(is_instance_klass(), "is layout incorrect?");
 553   assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
 554 }
 555 
 556 void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data,
 557                                        Array<Method*>* methods) {
 558   if (methods != nullptr && methods != Universe::the_empty_method_array() &&
 559       !methods->in_aot_cache()) {
 560     for (int i = 0; i < methods->length(); i++) {
 561       Method* method = methods->at(i);
 562       if (method == nullptr) continue;  // maybe null if error processing
 563       // Only want to delete methods that are not executing for RedefineClasses.

3837      _st->cr();
3838    }
3839 }
3840 
3841 
3842 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3843   Klass::oop_print_on(obj, st);
3844 
3845   if (this == vmClasses::String_klass()) {
3846     typeArrayOop value  = java_lang_String::value(obj);
3847     juint        length = java_lang_String::length(obj);
3848     if (value != nullptr &&
3849         value->is_typeArray() &&
3850         length <= (juint) value->length()) {
3851       st->print(BULLET"string: ");
3852       java_lang_String::print(obj, st);
3853       st->cr();
3854     }
3855   }
3856 
3857   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj, obj->mark()));
3858   FieldPrinter print_field(st, obj);
3859   print_nonstatic_fields(&print_field);
3860 
3861   if (this == vmClasses::Class_klass()) {
3862     st->print(BULLET"signature: ");
3863     java_lang_Class::print_signature(obj, st);
3864     st->cr();
3865     Klass* real_klass = java_lang_Class::as_Klass(obj);
3866     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3867       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3868       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3869     }
3870   } else if (this == vmClasses::MethodType_klass()) {
3871     st->print(BULLET"signature: ");
3872     java_lang_invoke_MethodType::print_signature(obj, st);
3873     st->cr();
3874   }
3875 }
3876 
3877 #ifndef PRODUCT
< prev index next >