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