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; |