2904
2905 #ifndef PRODUCT
2906
2907 void FieldPrinter::do_field(fieldDescriptor* fd) {
2908 _st->print(BULLET);
2909 if (_obj == NULL) {
2910 fd->print_on(_st);
2911 _st->cr();
2912 } else {
2913 fd->print_on_for(_st, _obj);
2914 _st->cr();
2915 }
2916 }
2917
2918
2919 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
2920 Klass::oop_print_on(obj, st);
2921
2922 if (this == SystemDictionary::String_klass()) {
2923 typeArrayOop value = java_lang_String::value(obj);
2924 juint offset = java_lang_String::offset(obj);
2925 juint length = java_lang_String::length(obj);
2926 if (value != NULL &&
2927 value->is_typeArray() &&
2928 offset <= (juint) value->length() &&
2929 offset + length <= (juint) value->length()) {
2930 st->print(BULLET"string: ");
2931 java_lang_String::print(obj, st);
2932 st->cr();
2933 if (!WizardMode) return; // that is enough
2934 }
2935 }
2936
2937 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
2938 FieldPrinter print_field(st, obj);
2939 do_nonstatic_fields(&print_field);
2940
2941 if (this == SystemDictionary::Class_klass()) {
2942 st->print(BULLET"signature: ");
2943 java_lang_Class::print_signature(obj, st);
2944 st->cr();
2945 Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
2946 st->print(BULLET"fake entry for mirror: ");
2947 mirrored_klass->print_value_on_maybe_null(st);
2948 st->cr();
2949 Klass* array_klass = java_lang_Class::array_klass(obj);
|
2904
2905 #ifndef PRODUCT
2906
2907 void FieldPrinter::do_field(fieldDescriptor* fd) {
2908 _st->print(BULLET);
2909 if (_obj == NULL) {
2910 fd->print_on(_st);
2911 _st->cr();
2912 } else {
2913 fd->print_on_for(_st, _obj);
2914 _st->cr();
2915 }
2916 }
2917
2918
2919 void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
2920 Klass::oop_print_on(obj, st);
2921
2922 if (this == SystemDictionary::String_klass()) {
2923 typeArrayOop value = java_lang_String::value(obj);
2924 juint length = java_lang_String::length(obj);
2925 if (value != NULL &&
2926 value->is_typeArray() &&
2927 length <= (juint) value->length()) {
2928 st->print(BULLET"string: ");
2929 java_lang_String::print(obj, st);
2930 st->cr();
2931 if (!WizardMode) return; // that is enough
2932 }
2933 }
2934
2935 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
2936 FieldPrinter print_field(st, obj);
2937 do_nonstatic_fields(&print_field);
2938
2939 if (this == SystemDictionary::Class_klass()) {
2940 st->print(BULLET"signature: ");
2941 java_lang_Class::print_signature(obj, st);
2942 st->cr();
2943 Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
2944 st->print(BULLET"fake entry for mirror: ");
2945 mirrored_klass->print_value_on_maybe_null(st);
2946 st->cr();
2947 Klass* array_klass = java_lang_Class::array_klass(obj);
|