RFR 8047737 Move array component mirror to instance of java/lang/Class (original) (raw)

Coleen Phillimore coleen.phillimore at oracle.com
Tue Jul 1 11:24:15 UTC 2014


Thank you! Coleen

On 7/1/14, 12:51 AM, Christian Thalinger wrote:

On Jun 30, 2014, at 5:50 PM, Coleen Phillimore <coleen.phillimore at oracle.com> wrote:

On 6/30/14, 3:50 PM, Christian Thalinger wrote: private Class(ClassLoader loader) { // Initialize final field for classLoader. The initialization value of non-null // prevents future JIT optimizations from assuming this final field is null. classLoader = loader; + componentType = null; }

Are we worried about the same optimization? Hi, I've decided to make them consistent and add another parameter to the Class constructor. http://cr.openjdk.java.net/~coleenp/8047737jdk2/ Thanks. Thanks, Coleen + computeoptionaloffset(componentmirroroffset, + klassoop, vmSymbols::componentTypename(), + vmSymbols::classsignature()); Is there a followup cleanup to make it non-optional? Or, are you waiting for JPRT to be able to push hotspot and jdk changes together? On Jun 30, 2014, at 5:42 AM, Coleen Phillimore <coleen.phillimore at oracle.com <mailto:coleen.phillimore at oracle.com>> wrote:

On 6/30/14, 1:55 AM, David Holmes wrote: Hi Coleen,

Your webrev links are to internal locations. Sorry, I cut/pasted the wrong links. They are: http://cr.openjdk.java.net/~coleenp/8047737jdk/ <http://cr.openjdk.java.net/%7Ecoleenp/8047737jdk/> http://cr.openjdk.java.net/~coleenp/8047737hotspot/ and the full version http://cr.openjdk.java.net/~coleenp/8047737hotspot/ Thank you for pointing this out David. Coleen David On 28/06/2014 5:24 AM, Coleen Phillimore wrote: Summary: Add field in java.lang.Class for componentType to simplify oop processing and intrinsics in JVM

This is part of ongoing work to clean up oop pointers in the metadata and simplify the interface between the JDK j.l.C and the JVM. There's a performance benefit at the end of all of this if we can remove all oop pointers from metadata. mirror in Klass is the only one left after this full change. See bug https://bugs.openjdk.java.net/browse/JDK-8047737 There are a couple steps to this change because Hotspot testing is done with promoted JDKs. The first step is this webrev: http://oklahoma.us.oracle.com/~cphillim/webrev/8047737jdk/ http://oklahoma.us.oracle.com/~cphillim/webrev/8047737hotspot/ When the JDK is promoted, the code to remove ArrayKlass::componentmirror will be changed under a new bug id. http://oklahoma.us.oracle.com/~cphillim/webrev/8047737hotspotfull Finally, a compatibility request and licensee notification will occur to remove the function JVMGetComponentType. Performance testing was done that shows no difference in performance. The isArray() call is a compiler intrinsic which is now called instead of getComponentType, which was recognized as a compiler intrinsic. JDK jtreg testing, hotspot jtreg testing, hotspot NSK testing and jck8 tests were performed on both the change requested (1st one) and the full change. hotspot NSK tests were run on the hotspot-only change with a promoted JDK. Please send your comments. Thanks, Coleen



More information about the core-libs-dev mailing list