hotspot/src/share/vm/services/heapDumper.cpp
changeset 360 21d113ecbf6a
parent 202 dc13bf0e5d5d
child 670 ddf3e9583f2f
child 1374 4c24294029a9
--- a/hotspot/src/share/vm/services/heapDumper.cpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/hotspot/src/share/vm/services/heapDumper.cpp	Sun Apr 13 17:43:42 2008 -0400
@@ -670,8 +670,12 @@
   switch (type) {
     case JVM_SIGNATURE_CLASS :
     case JVM_SIGNATURE_ARRAY : {
-      oop* f = (oop*)addr;
-      oop o = *f;
+      oop o;
+      if (UseCompressedOops) {
+        o = oopDesc::load_decode_heap_oop((narrowOop*)addr);
+      } else {
+        o = oopDesc::load_decode_heap_oop((oop*)addr);
+      }
 
       // reflection and sun.misc.Unsafe classes may have a reference to a
       // klassOop so filter it out.
@@ -1077,6 +1081,7 @@
  public:
   SymbolTableDumper(DumpWriter* writer)     { _writer = writer; }
   void do_oop(oop* obj_p);
+  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
 };
 
 void SymbolTableDumper::do_oop(oop* obj_p) {
@@ -1106,6 +1111,7 @@
     _thread_serial_num = thread_serial_num;
   }
   void do_oop(oop* obj_p);
+  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
 };
 
 
@@ -1133,6 +1139,7 @@
     _writer = writer;
   }
   void do_oop(oop* obj_p);
+  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
 };
 
 void JNIGlobalsDumper::do_oop(oop* obj_p) {
@@ -1164,6 +1171,7 @@
     writer()->write_u1(HPROF_GC_ROOT_MONITOR_USED);
     writer()->write_objectID(*obj_p);
   }
+  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
 };
 
 
@@ -1178,6 +1186,7 @@
     _writer = writer;
   }
   void do_oop(oop* obj_p);
+  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
 };
 
 void StickyClassDumper::do_oop(oop* obj_p) {