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

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

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, obj->mark()));
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
< prev index next >