< prev index next >

src/share/vm/services/heapDumper.cpp

Print this page




 739     u.l = (jlong)(0x7ff80000);
 740     u.l = (u.l << 32);
 741   } else {
 742     u.d = (double)d;
 743   }
 744   writer->write_u8((u8)u.l);
 745 }
 746 
 747 // dumps the raw value of the given field
 748 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
 749   switch (type) {
 750     case JVM_SIGNATURE_CLASS :
 751     case JVM_SIGNATURE_ARRAY : {
 752       oop o;
 753       if (UseCompressedOops) {
 754         o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
 755       } else {
 756         o = oopDesc::load_decode_heap_oop((oop*)addr);
 757       }
 758 






 759       // reflection and sun.misc.Unsafe classes may have a reference to a
 760       // Klass* so filter it out.
 761       assert(o->is_oop_or_null(), "should always be an oop");
 762       writer->write_objectID(o);
 763       break;
 764     }
 765     case JVM_SIGNATURE_BYTE     : {
 766       jbyte* b = (jbyte*)addr;
 767       writer->write_u1((u1)*b);
 768       break;
 769     }
 770     case JVM_SIGNATURE_CHAR     : {
 771       jchar* c = (jchar*)addr;
 772       writer->write_u2((u2)*c);
 773       break;
 774     }
 775     case JVM_SIGNATURE_SHORT : {
 776       jshort* s = (jshort*)addr;
 777       writer->write_u2((u2)*s);
 778       break;




 739     u.l = (jlong)(0x7ff80000);
 740     u.l = (u.l << 32);
 741   } else {
 742     u.d = (double)d;
 743   }
 744   writer->write_u8((u8)u.l);
 745 }
 746 
 747 // dumps the raw value of the given field
 748 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) {
 749   switch (type) {
 750     case JVM_SIGNATURE_CLASS :
 751     case JVM_SIGNATURE_ARRAY : {
 752       oop o;
 753       if (UseCompressedOops) {
 754         o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
 755       } else {
 756         o = oopDesc::load_decode_heap_oop((oop*)addr);
 757       }
 758 
 759 #if INCLUDE_ALL_GCS
 760       if (UseShenandoahGC) {
 761         o = ShenandoahBarrierSet::barrier_set()->load_reference_barrier(o);
 762       }
 763 #endif
 764 
 765       // reflection and sun.misc.Unsafe classes may have a reference to a
 766       // Klass* so filter it out.
 767       assert(o->is_oop_or_null(), "should always be an oop");
 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;


< prev index next >