< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

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

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

3789      _st->cr();
3790    }
3791 }
3792 
3793 
3794 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3795   Klass::oop_print_on(obj, st);
3796 
3797   if (this == vmClasses::String_klass()) {
3798     typeArrayOop value  = java_lang_String::value(obj);
3799     juint        length = java_lang_String::length(obj);
3800     if (value != nullptr &&
3801         value->is_typeArray() &&
3802         length <= (juint) value->length()) {
3803       st->print(BULLET"string: ");
3804       java_lang_String::print(obj, st);
3805       st->cr();
3806     }
3807   }
3808 
3809   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj));
3810   FieldPrinter print_field(st, obj);
3811   print_nonstatic_fields(&print_field);
3812 
3813   if (this == vmClasses::Class_klass()) {
3814     st->print(BULLET"signature: ");
3815     java_lang_Class::print_signature(obj, st);
3816     st->cr();
3817     Klass* real_klass = java_lang_Class::as_Klass(obj);
3818     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3819       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3820       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3821     }
3822   } else if (this == vmClasses::MethodType_klass()) {
3823     st->print(BULLET"signature: ");
3824     java_lang_invoke_MethodType::print_signature(obj, st);
3825     st->cr();
3826   }
3827 }
3828 
3829 #ifndef PRODUCT

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

3790      _st->cr();
3791    }
3792 }
3793 
3794 
3795 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3796   Klass::oop_print_on(obj, st);
3797 
3798   if (this == vmClasses::String_klass()) {
3799     typeArrayOop value  = java_lang_String::value(obj);
3800     juint        length = java_lang_String::length(obj);
3801     if (value != nullptr &&
3802         value->is_typeArray() &&
3803         length <= (juint) value->length()) {
3804       st->print(BULLET"string: ");
3805       java_lang_String::print(obj, st);
3806       st->cr();
3807     }
3808   }
3809 
3810   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj, obj->mark()));
3811   FieldPrinter print_field(st, obj);
3812   print_nonstatic_fields(&print_field);
3813 
3814   if (this == vmClasses::Class_klass()) {
3815     st->print(BULLET"signature: ");
3816     java_lang_Class::print_signature(obj, st);
3817     st->cr();
3818     Klass* real_klass = java_lang_Class::as_Klass(obj);
3819     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3820       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3821       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3822     }
3823   } else if (this == vmClasses::MethodType_klass()) {
3824     st->print(BULLET"signature: ");
3825     java_lang_invoke_MethodType::print_signature(obj, st);
3826     st->cr();
3827   }
3828 }
3829 
3830 #ifndef PRODUCT
< prev index next >