707 } else {
708 u.d = (double)d;
709 }
710 writer->write_u8((u8)u.l);
711 }
712
713 // dumps the raw value of the given field
714 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
715 switch (type) {
716 case JVM_SIGNATURE_CLASS :
717 case JVM_SIGNATURE_ARRAY : {
718 oop o;
719 if (UseCompressedOops) {
720 o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
721 } else {
722 o = oopDesc::load_decode_heap_oop((oop*)addr);
723 }
724
725 // reflection and sun.misc.Unsafe classes may have a reference to a
726 // Klass* so filter it out.
727 assert(o->is_oop_or_null(), err_msg("Expected an oop or NULL at " PTR_FORMAT, p2i(o)));
728 writer->write_objectID(o);
729 break;
730 }
731 case JVM_SIGNATURE_BYTE : {
732 jbyte* b = (jbyte*)addr;
733 writer->write_u1((u1)*b);
734 break;
735 }
736 case JVM_SIGNATURE_CHAR : {
737 jchar* c = (jchar*)addr;
738 writer->write_u2((u2)*c);
739 break;
740 }
741 case JVM_SIGNATURE_SHORT : {
742 jshort* s = (jshort*)addr;
743 writer->write_u2((u2)*s);
744 break;
745 }
746 case JVM_SIGNATURE_FLOAT : {
747 jfloat* f = (jfloat*)addr;
|
707 } else {
708 u.d = (double)d;
709 }
710 writer->write_u8((u8)u.l);
711 }
712
713 // dumps the raw value of the given field
714 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
715 switch (type) {
716 case JVM_SIGNATURE_CLASS :
717 case JVM_SIGNATURE_ARRAY : {
718 oop o;
719 if (UseCompressedOops) {
720 o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
721 } else {
722 o = oopDesc::load_decode_heap_oop((oop*)addr);
723 }
724
725 // reflection and sun.misc.Unsafe classes may have a reference to a
726 // Klass* so filter it out.
727 assert(o->is_oop_or_null(), "Expected an oop or NULL at " PTR_FORMAT, p2i(o));
728 writer->write_objectID(o);
729 break;
730 }
731 case JVM_SIGNATURE_BYTE : {
732 jbyte* b = (jbyte*)addr;
733 writer->write_u1((u1)*b);
734 break;
735 }
736 case JVM_SIGNATURE_CHAR : {
737 jchar* c = (jchar*)addr;
738 writer->write_u2((u2)*c);
739 break;
740 }
741 case JVM_SIGNATURE_SHORT : {
742 jshort* s = (jshort*)addr;
743 writer->write_u2((u2)*s);
744 break;
745 }
746 case JVM_SIGNATURE_FLOAT : {
747 jfloat* f = (jfloat*)addr;
|