< prev index next >

src/share/vm/services/heapDumper.cpp

Print this page




 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;


< prev index next >