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

3805      _st->cr();
3806    }
3807 }
3808 
3809 
3810 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3811   Klass::oop_print_on(obj, st);
3812 
3813   if (this == vmClasses::String_klass()) {
3814     typeArrayOop value  = java_lang_String::value(obj);
3815     juint        length = java_lang_String::length(obj);
3816     if (value != nullptr &&
3817         value->is_typeArray() &&
3818         length <= (juint) value->length()) {
3819       st->print(BULLET"string: ");
3820       java_lang_String::print(obj, st);
3821       st->cr();
3822     }
3823   }
3824 
3825   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj));
3826   FieldPrinter print_field(st, obj);
3827   print_nonstatic_fields(&print_field);
3828 
3829   if (this == vmClasses::Class_klass()) {
3830     st->print(BULLET"signature: ");
3831     java_lang_Class::print_signature(obj, st);
3832     st->cr();
3833     Klass* real_klass = java_lang_Class::as_Klass(obj);
3834     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3835       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3836       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3837     }
3838   } else if (this == vmClasses::MethodType_klass()) {
3839     st->print(BULLET"signature: ");
3840     java_lang_invoke_MethodType::print_signature(obj, st);
3841     st->cr();
3842   }
3843 }
3844 
3845 #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.

3806      _st->cr();
3807    }
3808 }
3809 
3810 
3811 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3812   Klass::oop_print_on(obj, st);
3813 
3814   if (this == vmClasses::String_klass()) {
3815     typeArrayOop value  = java_lang_String::value(obj);
3816     juint        length = java_lang_String::length(obj);
3817     if (value != nullptr &&
3818         value->is_typeArray() &&
3819         length <= (juint) value->length()) {
3820       st->print(BULLET"string: ");
3821       java_lang_String::print(obj, st);
3822       st->cr();
3823     }
3824   }
3825 
3826   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj, obj->mark()));
3827   FieldPrinter print_field(st, obj);
3828   print_nonstatic_fields(&print_field);
3829 
3830   if (this == vmClasses::Class_klass()) {
3831     st->print(BULLET"signature: ");
3832     java_lang_Class::print_signature(obj, st);
3833     st->cr();
3834     Klass* real_klass = java_lang_Class::as_Klass(obj);
3835     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3836       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3837       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3838     }
3839   } else if (this == vmClasses::MethodType_klass()) {
3840     st->print(BULLET"signature: ");
3841     java_lang_invoke_MethodType::print_signature(obj, st);
3842     st->cr();
3843   }
3844 }
3845 
3846 #ifndef PRODUCT
< prev index next >