< prev index next >

src/share/vm/services/heapDumper.cpp

Print this page




 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;


< prev index next >