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

Coleen Phillimore coleen.phillimore at oracle.com
Mon Jun 30 20:06:39 UTC 2014


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?

I don't know if I was justified in worrying about the optimization in 
the first place.   Since getComponentType() is conditional, I wasn't 
worried.

But it should be consistent.  Maybe I should revert the classLoader 
constructor change, now that I fixed all the tests not to care. What do 
people think?
>
> +  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?

Yes, please look at the _full webrev.  That has the non-optional changes 
in it and the follow on changes to remove getComponentType as an 
intrinsic in C2 (will file new RFE).  I really would like a compiler 
person to comment on it.

Thanks so much,
Coleen

>
> 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/8047737_jdk/ 
>> <http://cr.openjdk.java.net/%7Ecoleenp/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