src/share/vm/oops/instanceKlass.cpp

Print this page




3012      _st->cr();
3013    } else {
3014      fd->print_on_for(_st, _obj);
3015      _st->cr();
3016    }
3017 }
3018 
3019 
3020 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3021   Klass::oop_print_on(obj, st);
3022 
3023   if (this == SystemDictionary::String_klass()) {
3024     typeArrayOop value  = java_lang_String::value(obj);
3025     juint        offset = java_lang_String::offset(obj);
3026     juint        length = java_lang_String::length(obj);
3027     if (value != NULL &&
3028         value->is_typeArray() &&
3029         offset          <= (juint) value->length() &&
3030         offset + length <= (juint) value->length()) {
3031       st->print(BULLET"string: ");
3032       Handle h_obj(obj);
3033       java_lang_String::print(h_obj, st);
3034       st->cr();
3035       if (!WizardMode)  return;  // that is enough
3036     }
3037   }
3038 
3039   st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
3040   FieldPrinter print_field(st, obj);
3041   do_nonstatic_fields(&print_field);
3042 
3043   if (this == SystemDictionary::Class_klass()) {
3044     st->print(BULLET"signature: ");
3045     java_lang_Class::print_signature(obj, st);
3046     st->cr();
3047     Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
3048     st->print(BULLET"fake entry for mirror: ");
3049     mirrored_klass->print_value_on_maybe_null(st);
3050     st->cr();
3051     Klass* array_klass = java_lang_Class::array_klass(obj);
3052     st->print(BULLET"fake entry for array: ");
3053     array_klass->print_value_on_maybe_null(st);




3012      _st->cr();
3013    } else {
3014      fd->print_on_for(_st, _obj);
3015      _st->cr();
3016    }
3017 }
3018 
3019 
3020 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
3021   Klass::oop_print_on(obj, st);
3022 
3023   if (this == SystemDictionary::String_klass()) {
3024     typeArrayOop value  = java_lang_String::value(obj);
3025     juint        offset = java_lang_String::offset(obj);
3026     juint        length = java_lang_String::length(obj);
3027     if (value != NULL &&
3028         value->is_typeArray() &&
3029         offset          <= (juint) value->length() &&
3030         offset + length <= (juint) value->length()) {
3031       st->print(BULLET"string: ");
3032       java_lang_String::print(obj, st);

3033       st->cr();
3034       if (!WizardMode)  return;  // that is enough
3035     }
3036   }
3037 
3038   st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
3039   FieldPrinter print_field(st, obj);
3040   do_nonstatic_fields(&print_field);
3041 
3042   if (this == SystemDictionary::Class_klass()) {
3043     st->print(BULLET"signature: ");
3044     java_lang_Class::print_signature(obj, st);
3045     st->cr();
3046     Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
3047     st->print(BULLET"fake entry for mirror: ");
3048     mirrored_klass->print_value_on_maybe_null(st);
3049     st->cr();
3050     Klass* array_klass = java_lang_Class::array_klass(obj);
3051     st->print(BULLET"fake entry for array: ");
3052     array_klass->print_value_on_maybe_null(st);