Request for review: 8003424 - Enable Class Data Sharing for CompressedOops

harold seigel harold.seigel at oracle.com
Thu Jul 18 10:54:09 PDT 2013


Hi,

Please review this fix for bug 8003424.

Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
<http://cr.openjdk.java.net/%7Ehseigel/bug_8003424/>
Open bug links at:

    http://bugs.sun.com/view_bug.do?bug_id=8003424
    http://bugs.sun.com/view_bug.do?bug_id=8016729
    http://bugs.sun.com/view_bug.do?bug_id=8011610

JBS Bug links at

    https://jbs.oracle.com/bugs/browse/JDK-8003424
    https://jbs.oracle.com/bugs/browse/JDK-8016729
    https://jbs.oracle.com/bugs/browse/JDK-8011610


This fix provides support for using compressed klass pointers with CDS.  
It also changes the class metaspace allocation on 64-bit platforms when 
UseCompressedKlassPointers is true.  Instead of allocating the class 
metaspace as part of the Java Heap allocation and locating it at the 
base of that allocation, the metaspace will now be allocated separately, 
above the Java heap.  This will enable future expansion of the metaspace 
because it won't be backed up against the Java heap.  If CDS is being 
used, then the CDS region will be allocated between the Java heap and 
the metaspace.

The new class metaspace allocation code tries to allocate memory at 32G, 
or above the CDS region, if it is present.  Because of this, encoding 
and decoding of compressed klass pointers will always require use of a 
base register.  So, encoding and decoding of compressed klass pointers 
will differ from compressed oops.

There are no class metaspace allocation changes if 
UseCompressedKlassPointers is turned off or if running on a 32-bit platform.

The code changes also include some cleanup and will fix bugs 8016729, 
8011610, and 8003424.


Many of the modules in this webrev contain a lot of changes. Modules 
macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to 
support the new encoding and decoding of compressed klass pointers.

Module metaspace.cpp was changed significantly to support the new 
allocation for metaspace and the CDS region and to determine compressed 
klass pointer encoding base and shifting values.

Most of the changes to module universe.cpp were to remove code related 
to allocating metaspace and remove code that considered compressed klass 
pointers when determining the compressed oops compression mechanism.

Modules klass.inline.hpp and oop.inline.hpp were changed as part of a 
cleanup requested by Coleen.


These changes were tested with JCK Lang and VM tests, JTReg tests, JPRT, 
GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist 
tests.  Most of the test were run with -Xshare:on and -Xshare:off (with 
and without CDS), and were run on Solaris Sparc, 32-Bit Linux and 64-Bit 
Linux.  Jtreg tests were run on Windows 7 and Mac OS.  JCK tests were 
run on Solaris x86.

The performance impact of these changes is TBD.

Thanks, Harold


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130718/9c18888a/attachment.html 


More information about the hotspot-runtime-dev mailing list