< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

 512   return vtable_indices;
 513 }
 514 
 515 
 516 InstanceKlass::InstanceKlass() {
 517   assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
 518 }
 519 
 520 InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, ReferenceType reference_type) :
 521   Klass(kind),
 522   _nest_members(nullptr),
 523   _nest_host(nullptr),
 524   _permitted_subclasses(nullptr),
 525   _record_components(nullptr),
 526   _static_field_size(parser.static_field_size()),
 527   _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())),
 528   _itable_len(parser.itable_size()),
 529   _nest_host_index(0),
 530   _init_state(allocated),
 531   _reference_type(reference_type),
 532   _init_thread(nullptr)

 533 {
 534   set_vtable_length(parser.vtable_size());
 535   set_access_flags(parser.access_flags());
 536   if (parser.is_hidden()) set_is_hidden();
 537   set_layout_helper(Klass::instance_layout_helper(parser.layout_size(),
 538                                                     false));
 539 
 540   assert(nullptr == _methods, "underlying memory not zeroed?");
 541   assert(is_instance_klass(), "is layout incorrect?");
 542   assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
 543 }
 544 
 545 void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data,
 546                                        Array<Method*>* methods) {
 547   if (methods != nullptr && methods != Universe::the_empty_method_array() &&
 548       !methods->is_shared()) {
 549     for (int i = 0; i < methods->length(); i++) {
 550       Method* method = methods->at(i);
 551       if (method == nullptr) continue;  // maybe null if error processing
 552       // Only want to delete methods that are not executing for RedefineClasses.

3771      _st->cr();
3772    }
3773 }
3774 
3775 
3776 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3777   Klass::oop_print_on(obj, st);
3778 
3779   if (this == vmClasses::String_klass()) {
3780     typeArrayOop value  = java_lang_String::value(obj);
3781     juint        length = java_lang_String::length(obj);
3782     if (value != nullptr &&
3783         value->is_typeArray() &&
3784         length <= (juint) value->length()) {
3785       st->print(BULLET"string: ");
3786       java_lang_String::print(obj, st);
3787       st->cr();
3788     }
3789   }
3790 
3791   st->print_cr(BULLET"---- fields (total size " SIZE_FORMAT " words):", oop_size(obj));
3792   FieldPrinter print_field(st, obj);
3793   print_nonstatic_fields(&print_field);
3794 
3795   if (this == vmClasses::Class_klass()) {
3796     st->print(BULLET"signature: ");
3797     java_lang_Class::print_signature(obj, st);
3798     st->cr();
3799     Klass* real_klass = java_lang_Class::as_Klass(obj);
3800     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3801       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3802       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3803     }
3804   } else if (this == vmClasses::MethodType_klass()) {
3805     st->print(BULLET"signature: ");
3806     java_lang_invoke_MethodType::print_signature(obj, st);
3807     st->cr();
3808   }
3809 }
3810 
3811 #ifndef PRODUCT

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

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