1.1 --- a/src/share/vm/services/heapDumper.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/share/vm/services/heapDumper.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -670,8 +670,12 @@ 1.4 switch (type) { 1.5 case JVM_SIGNATURE_CLASS : 1.6 case JVM_SIGNATURE_ARRAY : { 1.7 - oop* f = (oop*)addr; 1.8 - oop o = *f; 1.9 + oop o; 1.10 + if (UseCompressedOops) { 1.11 + o = oopDesc::load_decode_heap_oop((narrowOop*)addr); 1.12 + } else { 1.13 + o = oopDesc::load_decode_heap_oop((oop*)addr); 1.14 + } 1.15 1.16 // reflection and sun.misc.Unsafe classes may have a reference to a 1.17 // klassOop so filter it out. 1.18 @@ -1077,6 +1081,7 @@ 1.19 public: 1.20 SymbolTableDumper(DumpWriter* writer) { _writer = writer; } 1.21 void do_oop(oop* obj_p); 1.22 + void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } 1.23 }; 1.24 1.25 void SymbolTableDumper::do_oop(oop* obj_p) { 1.26 @@ -1106,6 +1111,7 @@ 1.27 _thread_serial_num = thread_serial_num; 1.28 } 1.29 void do_oop(oop* obj_p); 1.30 + void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } 1.31 }; 1.32 1.33 1.34 @@ -1133,6 +1139,7 @@ 1.35 _writer = writer; 1.36 } 1.37 void do_oop(oop* obj_p); 1.38 + void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } 1.39 }; 1.40 1.41 void JNIGlobalsDumper::do_oop(oop* obj_p) { 1.42 @@ -1164,6 +1171,7 @@ 1.43 writer()->write_u1(HPROF_GC_ROOT_MONITOR_USED); 1.44 writer()->write_objectID(*obj_p); 1.45 } 1.46 + void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } 1.47 }; 1.48 1.49 1.50 @@ -1178,6 +1186,7 @@ 1.51 _writer = writer; 1.52 } 1.53 void do_oop(oop* obj_p); 1.54 + void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); } 1.55 }; 1.56 1.57 void StickyClassDumper::do_oop(oop* obj_p) {