< 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.

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

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