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? + compute_optional_offset(_component_mirror_offset, + klass_oop, vmSymbols::componentType_name(), + vmSymbols::class_signature()); 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.phillim...@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/8047737_jdk/ > http://cr.openjdk.java.net/~coleenp/8047737_hotspot/ > > and the full version > > http://cr.openjdk.java.net/~coleenp/8047737_hotspot/ > > 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/8047737_jdk/ >>> http://oklahoma.us.oracle.com/~cphillim/webrev/8047737_hotspot/ >>> >>> When the JDK is promoted, the code to remove >>> ArrayKlass::_component_mirror will be changed under a new bug id. >>> >>> http://oklahoma.us.oracle.com/~cphillim/webrev/8047737_hotspot_full >>> >>> Finally, a compatibility request and licensee notification will occur to >>> remove the function JVM_GetComponentType. >>> >>> 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 >