RFR: 8015576: CMS: svc agent throws java.lang.RuntimeException: No type named "FreeList" in database

Vladimir Kempik vladimir.kempik at oracle.com
Thu Jul 4 07:50:52 PDT 2013


Hi all,

this change fixes an issue where we could not run jmap -heap on a
java process running with -XX:+UseConcMarkSweepGC.

Partially (1 line) it's a backport of 
http://bugs.sun.com/view_bug.do?bug_id=8005278 from jdk8

The problem originated from the following change in hotspot:
  changeset    3294:9f059abe8cf2
  parent       3284:3c91f2c9fd21
  7131629: Generalize the CMS free list code

--- 
a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp 
Fri Apr 20 17:13:36 2012 -0700
+++ 
b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp 
Thu Mar 29 19:46:24 2012 -0700
@@ -44,11 +44,11 @@
nonstatic_field(FreeChunk, _next, FreeChunk*) \
nonstatic_field(FreeChunk, _prev, FreeChunk*) \
nonstatic_field(LinearAllocBlock, _word_size, size_t) \
- nonstatic_field(FreeList, _size, size_t) \
- nonstatic_field(FreeList, _count, ssize_t) \
- nonstatic_field(BinaryTreeDictionary, _totalSize, size_t) \
- nonstatic_field(CompactibleFreeListSpace, _dictionary, 
FreeBlockDictionary*) \
- nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0], FreeList) \
+ nonstatic_field(FreeList<FreeChunk>, _size, size_t) \
+ nonstatic_field(FreeList<FreeChunk>, _count, ssize_t) \
+ nonstatic_field(BinaryTreeDictionary<FreeChunk>,_totalSize, size_t) \
+ nonstatic_field(CompactibleFreeListSpace, _dictionary, 
FreeBlockDictionary<FreeChunk>*) \
+ nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0], 
FreeList<FreeChunk>) \
nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock, 
LinearAllocBlock)
@@ -70,13 +70,13 @@
declare_toplevel_type(CompactibleFreeListSpace*) \
declare_toplevel_type(CMSCollector*) \
declare_toplevel_type(FreeChunk*) \
- declare_toplevel_type(BinaryTreeDictionary*) \
- declare_toplevel_type(FreeBlockDictionary*) \
- declare_toplevel_type(FreeList*) \
- declare_toplevel_type(FreeList) \
+ declare_toplevel_type(BinaryTreeDictionary<FreeChunk>*) \
+ declare_toplevel_type(FreeBlockDictionary<FreeChunk>*) \
+ declare_toplevel_type(FreeList<FreeChunk>*) \
+ declare_toplevel_type(FreeList<FreeChunk>) \
declare_toplevel_type(LinearAllocBlock) \
- declare_toplevel_type(FreeBlockDictionary) \
- declare_type(BinaryTreeDictionary, FreeBlockDictionary)
+ declare_toplevel_type(FreeBlockDictionary<FreeChunk>) \
+ declare_type(BinaryTreeDictionary<FreeChunk>, 
FreeBlockDictionary<FreeChunk>)
#define VM_INT_CONSTANTS_CMS(declare_constant) \
declare_constant(Generation::ConcurrentMarkSweep) \


This fix updates the SA code to be like the hotspot code.

Webrev: http://cr.openjdk.java.net/~mcherkas/vladimir/8015576/webrev.00/

Testing:
- JPRT
- Running jmap -heap successfully on a java process using 
-XX:+UseConcMarkSweepGC

Thanks,
Vladimir


More information about the hotspot-runtime-dev mailing list