RFR 6642881: Improve performance of Class.getClassLoader()

Coleen Phillimore coleen.phillimore at oracle.com
Mon Jun 16 15:42:30 UTC 2014


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/
open webrev at http://cr.openjdk.java.net/~coleenp/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