< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

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

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

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

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

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