RFR 8047737 Move array component mirror to instance of java/lang/Class

Christian Thalinger christian.thalinger at oracle.com
Mon Jun 30 19:50:47 UTC 2014


     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.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/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
> 




More information about the core-libs-dev mailing list