747 } else {
748 u.d = (double)d;
749 }
750 writer->write_u8((u8)u.l);
751 }
752
753 // dumps the raw value of the given field
754 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
755 switch (type) {
756 case JVM_SIGNATURE_CLASS :
757 case JVM_SIGNATURE_ARRAY : {
758 oop o;
759 if (UseCompressedOops) {
760 o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
761 } else {
762 o = oopDesc::load_decode_heap_oop((oop*)addr);
763 }
764
765 // reflection and Unsafe classes may have a reference to a
766 // Klass* so filter it out.
767 assert(o->is_oop_or_null(), "Expected an oop or NULL at " PTR_FORMAT, p2i(o));
768 writer->write_objectID(o);
769 break;
770 }
771 case JVM_SIGNATURE_BYTE : {
772 jbyte* b = (jbyte*)addr;
773 writer->write_u1((u1)*b);
774 break;
775 }
776 case JVM_SIGNATURE_CHAR : {
777 jchar* c = (jchar*)addr;
778 writer->write_u2((u2)*c);
779 break;
780 }
781 case JVM_SIGNATURE_SHORT : {
782 jshort* s = (jshort*)addr;
783 writer->write_u2((u2)*s);
784 break;
785 }
786 case JVM_SIGNATURE_FLOAT : {
787 jfloat* f = (jfloat*)addr;
|
747 } else {
748 u.d = (double)d;
749 }
750 writer->write_u8((u8)u.l);
751 }
752
753 // dumps the raw value of the given field
754 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
755 switch (type) {
756 case JVM_SIGNATURE_CLASS :
757 case JVM_SIGNATURE_ARRAY : {
758 oop o;
759 if (UseCompressedOops) {
760 o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
761 } else {
762 o = oopDesc::load_decode_heap_oop((oop*)addr);
763 }
764
765 // reflection and Unsafe classes may have a reference to a
766 // Klass* so filter it out.
767 assert(oopDesc::is_oop_or_null(o), "Expected an oop or NULL at " PTR_FORMAT, p2i(o));
768 writer->write_objectID(o);
769 break;
770 }
771 case JVM_SIGNATURE_BYTE : {
772 jbyte* b = (jbyte*)addr;
773 writer->write_u1((u1)*b);
774 break;
775 }
776 case JVM_SIGNATURE_CHAR : {
777 jchar* c = (jchar*)addr;
778 writer->write_u2((u2)*c);
779 break;
780 }
781 case JVM_SIGNATURE_SHORT : {
782 jshort* s = (jshort*)addr;
783 writer->write_u2((u2)*s);
784 break;
785 }
786 case JVM_SIGNATURE_FLOAT : {
787 jfloat* f = (jfloat*)addr;
|