RFR 6642881: Improve performance of Class.getClassLoader()

Coleen Phillimore coleen.phillimore at oracle.com
Mon Jun 16 22:44:02 UTC 2014


On 6/16/14, 6:33 PM, Christian Thalinger wrote:
> +  template(classClassLoader_name,                      "classLoader")                                             \
>
> This should be classLoader_name.

Thanks, you're right, I thought there was some sort of namespace 
convention (ie to say this is a field of j.l.class) from following 
classRedefinedCount example but there isn't this convention.

Thanks,
Coleen

>
> Otherwise this looks good.
>
> On Jun 16, 2014, at 8:42 AM, Coleen Phillimore 
> <coleen.phillimore at oracle.com <mailto:coleen.phillimore at oracle.com>> 
> wrote:
>
>> Summary: Add classLoader to java/lang/Class instance for fast access
>>
>> In order to improve performance of Class.getClassLoader() in a way to 
>> allow the compilers to automatically optimize this call, I added the 
>> classLoader to the instance of java/lang/Class.  For microbenchmarks, 
>> this results in a 98% improvement, which was expected.  For Oracle 
>> internal applications, this results in a 10-12% improvement on 
>> solaris/sparc.   The increase in size of java/lang/Class can be 
>> offset by other changes (removing constant pool lock, or removing 
>> signers).
>>
>> See bug link https://bugs.openjdk.java.net/browse/JDK-6642881 and 
>> associated linked bugs for more details.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/6642881_hotspot/ 
>> <http://cr.openjdk.java.net/%7Ecoleenp/6642881_hotspot/>
>> open webrev at http://cr.openjdk.java.net/~coleenp/6642881_jdk/ 
>> <http://cr.openjdk.java.net/%7Ecoleenp/6642881_jdk/>
>>
>> There is both hotspot and jdk changes for this change.  The hotspot 
>> changes can work without the jdk changes (check for optional field), 
>> but not vice-versa.  I'll file another bug (and compatibility 
>> request) to remove JVM_GetClassLoader from hotspot.
>>
>> Tested with jck lang, vm, api/java_lang tests with/without jdk 
>> change, nsk vm.quick.testlist and hotspot jtreg tests, and jprt.
>>
>> Thanks,
>> Coleen
>>
>>
>



More information about the jdk9-dev mailing list