RFR: 8015576: CMS: svc agent throws java.lang.RuntimeException: No type named "FreeList" in database
Kevin Walls
kevin.walls at oracle.com
Tue Jul 9 01:57:18 PDT 2013
Thanks Vladimir -
Looks good to me.
The only question would have been if there's any benefit in getting both
releases in sync and taking the full backport and creating
AFLBinaryTreeDictionary in hs24. There's time pressure on this at the
minute as a tool (jmap) lies broken, so the simple fix you have seems
appropriate (in hs24, vmStructs_cms.hpp still references
BinaryTreeDictionary not AFLBinaryTreeDictionary).
There is some more history in email:
http://mail.openjdk.java.net/pipermail/serviceability-dev/2013-January/008109.html
I added serviceability-dev on the cc too, we should encourage a further
Review there. Would be great to get this reviewed today and push ahead.
Thanks
Kevin
On 04/07/13 15:50, Vladimir Kempik wrote:
> 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 serviceability-dev
mailing list