equal
deleted
inserted
replaced
668 // dumps the raw value of the given field |
668 // dumps the raw value of the given field |
669 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) { |
669 void DumperSupport::dump_field_value(DumpWriter* writer, char type, address addr) { |
670 switch (type) { |
670 switch (type) { |
671 case JVM_SIGNATURE_CLASS : |
671 case JVM_SIGNATURE_CLASS : |
672 case JVM_SIGNATURE_ARRAY : { |
672 case JVM_SIGNATURE_ARRAY : { |
673 oop* f = (oop*)addr; |
673 oop o; |
674 oop o = *f; |
674 if (UseCompressedOops) { |
|
675 o = oopDesc::load_decode_heap_oop((narrowOop*)addr); |
|
676 } else { |
|
677 o = oopDesc::load_decode_heap_oop((oop*)addr); |
|
678 } |
675 |
679 |
676 // reflection and sun.misc.Unsafe classes may have a reference to a |
680 // reflection and sun.misc.Unsafe classes may have a reference to a |
677 // klassOop so filter it out. |
681 // klassOop so filter it out. |
678 if (o != NULL && o->is_klass()) { |
682 if (o != NULL && o->is_klass()) { |
679 o = NULL; |
683 o = NULL; |
1075 DumpWriter* _writer; |
1079 DumpWriter* _writer; |
1076 DumpWriter* writer() const { return _writer; } |
1080 DumpWriter* writer() const { return _writer; } |
1077 public: |
1081 public: |
1078 SymbolTableDumper(DumpWriter* writer) { _writer = writer; } |
1082 SymbolTableDumper(DumpWriter* writer) { _writer = writer; } |
1079 void do_oop(oop* obj_p); |
1083 void do_oop(oop* obj_p); |
|
1084 void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } |
1080 }; |
1085 }; |
1081 |
1086 |
1082 void SymbolTableDumper::do_oop(oop* obj_p) { |
1087 void SymbolTableDumper::do_oop(oop* obj_p) { |
1083 ResourceMark rm; |
1088 ResourceMark rm; |
1084 symbolOop sym = (symbolOop)*obj_p; |
1089 symbolOop sym = (symbolOop)*obj_p; |
1104 JNILocalsDumper(DumpWriter* writer, u4 thread_serial_num) { |
1109 JNILocalsDumper(DumpWriter* writer, u4 thread_serial_num) { |
1105 _writer = writer; |
1110 _writer = writer; |
1106 _thread_serial_num = thread_serial_num; |
1111 _thread_serial_num = thread_serial_num; |
1107 } |
1112 } |
1108 void do_oop(oop* obj_p); |
1113 void do_oop(oop* obj_p); |
|
1114 void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } |
1109 }; |
1115 }; |
1110 |
1116 |
1111 |
1117 |
1112 void JNILocalsDumper::do_oop(oop* obj_p) { |
1118 void JNILocalsDumper::do_oop(oop* obj_p) { |
1113 // ignore null or deleted handles |
1119 // ignore null or deleted handles |
1131 public: |
1137 public: |
1132 JNIGlobalsDumper(DumpWriter* writer) { |
1138 JNIGlobalsDumper(DumpWriter* writer) { |
1133 _writer = writer; |
1139 _writer = writer; |
1134 } |
1140 } |
1135 void do_oop(oop* obj_p); |
1141 void do_oop(oop* obj_p); |
|
1142 void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } |
1136 }; |
1143 }; |
1137 |
1144 |
1138 void JNIGlobalsDumper::do_oop(oop* obj_p) { |
1145 void JNIGlobalsDumper::do_oop(oop* obj_p) { |
1139 oop o = *obj_p; |
1146 oop o = *obj_p; |
1140 |
1147 |
1162 } |
1169 } |
1163 void do_oop(oop* obj_p) { |
1170 void do_oop(oop* obj_p) { |
1164 writer()->write_u1(HPROF_GC_ROOT_MONITOR_USED); |
1171 writer()->write_u1(HPROF_GC_ROOT_MONITOR_USED); |
1165 writer()->write_objectID(*obj_p); |
1172 writer()->write_objectID(*obj_p); |
1166 } |
1173 } |
|
1174 void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } |
1167 }; |
1175 }; |
1168 |
1176 |
1169 |
1177 |
1170 // Support class used to generate HPROF_GC_ROOT_STICKY_CLASS records |
1178 // Support class used to generate HPROF_GC_ROOT_STICKY_CLASS records |
1171 |
1179 |
1176 public: |
1184 public: |
1177 StickyClassDumper(DumpWriter* writer) { |
1185 StickyClassDumper(DumpWriter* writer) { |
1178 _writer = writer; |
1186 _writer = writer; |
1179 } |
1187 } |
1180 void do_oop(oop* obj_p); |
1188 void do_oop(oop* obj_p); |
|
1189 void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } |
1181 }; |
1190 }; |
1182 |
1191 |
1183 void StickyClassDumper::do_oop(oop* obj_p) { |
1192 void StickyClassDumper::do_oop(oop* obj_p) { |
1184 if (*obj_p != NULL) { |
1193 if (*obj_p != NULL) { |
1185 oop o = *obj_p; |
1194 oop o = *obj_p; |