667 case T_DOUBLE: { |
667 case T_DOUBLE: { |
668 double d = mirror->double_field(fd->offset()); |
668 double d = mirror->double_field(fd->offset()); |
669 _out->print_cr(INT64_FORMAT, *(int64_t*)&d); |
669 _out->print_cr(INT64_FORMAT, *(int64_t*)&d); |
670 break; |
670 break; |
671 } |
671 } |
672 case T_ARRAY: { |
672 case T_ARRAY: // fall-through |
|
673 case T_OBJECT: { |
673 oop value = mirror->obj_field_acquire(fd->offset()); |
674 oop value = mirror->obj_field_acquire(fd->offset()); |
674 if (value == NULL) { |
675 if (value == NULL) { |
675 _out->print_cr("null"); |
676 _out->print_cr("null"); |
676 } else { |
677 } else if (value->is_instance()) { |
|
678 assert(fd->field_type() == T_OBJECT, ""); |
|
679 if (value->is_a(SystemDictionary::String_klass())) { |
|
680 const char* ascii_value = java_lang_String::as_quoted_ascii(value); |
|
681 _out->print("\"%s\"", (ascii_value != NULL) ? ascii_value : ""); |
|
682 } else { |
|
683 const char* klass_name = value->klass()->name()->as_quoted_ascii(); |
|
684 _out->print_cr("%s", klass_name); |
|
685 } |
|
686 } else if (value->is_array()) { |
677 typeArrayOop ta = (typeArrayOop)value; |
687 typeArrayOop ta = (typeArrayOop)value; |
678 _out->print("%d", ta->length()); |
688 _out->print("%d", ta->length()); |
679 if (value->is_objArray()) { |
689 if (value->is_objArray()) { |
680 objArrayOop oa = (objArrayOop)value; |
690 objArrayOop oa = (objArrayOop)value; |
681 const char* klass_name = value->klass()->name()->as_quoted_ascii(); |
691 const char* klass_name = value->klass()->name()->as_quoted_ascii(); |
682 _out->print(" %s", klass_name); |
692 _out->print(" %s", klass_name); |
683 } |
693 } |
684 _out->cr(); |
694 _out->cr(); |
685 } |
|
686 break; |
|
687 } |
|
688 case T_OBJECT: { |
|
689 oop value = mirror->obj_field_acquire(fd->offset()); |
|
690 if (value == NULL) { |
|
691 _out->print_cr("null"); |
|
692 } else if (value->is_instance()) { |
|
693 if (value->is_a(SystemDictionary::String_klass())) { |
|
694 const char* ascii_value = java_lang_String::as_quoted_ascii(value); |
|
695 _out->print("\"%s\"", (ascii_value != NULL) ? ascii_value : ""); |
|
696 } else { |
|
697 const char* klass_name = value->klass()->name()->as_quoted_ascii(); |
|
698 _out->print_cr("%s", klass_name); |
|
699 } |
|
700 } else { |
695 } else { |
701 ShouldNotReachHere(); |
696 ShouldNotReachHere(); |
702 } |
697 } |
703 break; |
698 break; |
704 } |
699 } |