diff src/share/vm/services/heapDumper.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents d5fc211aea19
children d1605aabd0a1 37f87013dfd8
line wrap: on
line diff
--- a/src/share/vm/services/heapDumper.cpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/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) {