< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

 520   return vtable_indices;
 521 }
 522 
 523 
 524 InstanceKlass::InstanceKlass() {
 525   assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
 526 }
 527 
 528 InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, ReferenceType reference_type) :
 529   Klass(kind),
 530   _nest_members(nullptr),
 531   _nest_host(nullptr),
 532   _permitted_subclasses(nullptr),
 533   _record_components(nullptr),
 534   _static_field_size(parser.static_field_size()),
 535   _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())),
 536   _itable_len(parser.itable_size()),
 537   _nest_host_index(0),
 538   _init_state(allocated),
 539   _reference_type(reference_type),
 540   _init_thread(nullptr)

 541 {
 542   set_vtable_length(parser.vtable_size());
 543   set_access_flags(parser.access_flags());
 544   if (parser.is_hidden()) set_is_hidden();
 545   set_layout_helper(Klass::instance_layout_helper(parser.layout_size(),
 546                                                     false));
 547 
 548   assert(nullptr == _methods, "underlying memory not zeroed?");
 549   assert(is_instance_klass(), "is layout incorrect?");
 550   assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
 551 }
 552 
 553 void InstanceKlass::set_is_cloneable() {
 554   if (name() == vmSymbols::java_lang_invoke_MemberName()) {
 555     assert(is_final(), "no subclasses allowed");
 556     // MemberName cloning should not be intrinsified and always happen in JVM_Clone.
 557   } else if (reference_type() != REF_NONE) {
 558     // Reference cloning should not be intrinsified and always happen in JVM_Clone.
 559   } else {
 560     set_is_cloneable_fast();

3876      _st->cr();
3877    }
3878 }
3879 
3880 
3881 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3882   Klass::oop_print_on(obj, st);
3883 
3884   if (this == vmClasses::String_klass()) {
3885     typeArrayOop value  = java_lang_String::value(obj);
3886     juint        length = java_lang_String::length(obj);
3887     if (value != nullptr &&
3888         value->is_typeArray() &&
3889         length <= (juint) value->length()) {
3890       st->print(BULLET"string: ");
3891       java_lang_String::print(obj, st);
3892       st->cr();
3893     }
3894   }
3895 
3896   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj));
3897   FieldPrinter print_field(st, obj);
3898   print_nonstatic_fields(&print_field);
3899 
3900   if (this == vmClasses::Class_klass()) {
3901     st->print(BULLET"signature: ");
3902     java_lang_Class::print_signature(obj, st);
3903     st->cr();
3904     Klass* real_klass = java_lang_Class::as_Klass(obj);
3905     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3906       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3907       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3908     }
3909   } else if (this == vmClasses::MethodType_klass()) {
3910     st->print(BULLET"signature: ");
3911     java_lang_invoke_MethodType::print_signature(obj, st);
3912     st->cr();
3913   }
3914 }
3915 
3916 #ifndef PRODUCT

 520   return vtable_indices;
 521 }
 522 
 523 
 524 InstanceKlass::InstanceKlass() {
 525   assert(CDSConfig::is_dumping_static_archive() || CDSConfig::is_using_archive(), "only for CDS");
 526 }
 527 
 528 InstanceKlass::InstanceKlass(const ClassFileParser& parser, KlassKind kind, ReferenceType reference_type) :
 529   Klass(kind),
 530   _nest_members(nullptr),
 531   _nest_host(nullptr),
 532   _permitted_subclasses(nullptr),
 533   _record_components(nullptr),
 534   _static_field_size(parser.static_field_size()),
 535   _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())),
 536   _itable_len(parser.itable_size()),
 537   _nest_host_index(0),
 538   _init_state(allocated),
 539   _reference_type(reference_type),
 540   _init_thread(nullptr),
 541   _hash_offset(parser.hash_offset())
 542 {
 543   set_vtable_length(parser.vtable_size());
 544   set_access_flags(parser.access_flags());
 545   if (parser.is_hidden()) set_is_hidden();
 546   set_layout_helper(Klass::instance_layout_helper(parser.layout_size(),
 547                                                     false));
 548 
 549   assert(nullptr == _methods, "underlying memory not zeroed?");
 550   assert(is_instance_klass(), "is layout incorrect?");
 551   assert(size_helper() == parser.layout_size(), "incorrect size_helper?");
 552 }
 553 
 554 void InstanceKlass::set_is_cloneable() {
 555   if (name() == vmSymbols::java_lang_invoke_MemberName()) {
 556     assert(is_final(), "no subclasses allowed");
 557     // MemberName cloning should not be intrinsified and always happen in JVM_Clone.
 558   } else if (reference_type() != REF_NONE) {
 559     // Reference cloning should not be intrinsified and always happen in JVM_Clone.
 560   } else {
 561     set_is_cloneable_fast();

3877      _st->cr();
3878    }
3879 }
3880 
3881 
3882 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3883   Klass::oop_print_on(obj, st);
3884 
3885   if (this == vmClasses::String_klass()) {
3886     typeArrayOop value  = java_lang_String::value(obj);
3887     juint        length = java_lang_String::length(obj);
3888     if (value != nullptr &&
3889         value->is_typeArray() &&
3890         length <= (juint) value->length()) {
3891       st->print(BULLET"string: ");
3892       java_lang_String::print(obj, st);
3893       st->cr();
3894     }
3895   }
3896 
3897   st->print_cr(BULLET"---- fields (total size %zu words):", oop_size(obj, obj->mark()));
3898   FieldPrinter print_field(st, obj);
3899   print_nonstatic_fields(&print_field);
3900 
3901   if (this == vmClasses::Class_klass()) {
3902     st->print(BULLET"signature: ");
3903     java_lang_Class::print_signature(obj, st);
3904     st->cr();
3905     Klass* real_klass = java_lang_Class::as_Klass(obj);
3906     if (real_klass != nullptr && real_klass->is_instance_klass()) {
3907       st->print_cr(BULLET"---- static fields (%d):", java_lang_Class::static_oop_field_count(obj));
3908       InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
3909     }
3910   } else if (this == vmClasses::MethodType_klass()) {
3911     st->print(BULLET"signature: ");
3912     java_lang_invoke_MethodType::print_signature(obj, st);
3913     st->cr();
3914   }
3915 }
3916 
3917 #ifndef PRODUCT
< prev index next >