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

Christian Tornqvist christian.tornqvist at oracle.com
Fri Jul 19 07:48:08 PDT 2013


Hi Harold, 

 

Passing ‘-d64’ to createJavaProcessBuilder() is redundant, it’s added automatically if it’s running on Solaris 64 bit.

 

Thanks,

Christian

 

From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of harold seigel
Sent: den 18 juli 2013 13:54
To: hotspot-runtime-dev at openjdk.java.net
Subject: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops

 

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/20130719/457b2b6d/attachment.html 


More information about the hotspot-runtime-dev mailing list