RFR 6642881: Improve performance of Class.getClassLoader()
Mandy Chung
mandy.chung at oracle.com
Wed Jun 18 19:27:39 UTC 2014
On 6/18/2014 11:35 AM, Coleen Phillimore wrote:
>
> /*
> * Private constructor. Only the Java Virtual Machine creates Class
> * objects. This constructor is not used but prevents a warning that
> * classLoader is not initialized. The initialization value of
> non-null
> * prevents future JIT optimizations from assuming this final
> field is null.
> */
>
As David points out, the private constructor is to avoid the default
constructor being generated. Your change to initialize the final
classloader field is a second reason. The second statement reads to me
like the reason for this private constructor is for the warning reason.
Perhaps "but prevents... " gets me confused and maybe that part is not
really needed? Your change looks good anyway.
>>
>> I didn't review the hotspot change. The new classLoader field is not
>> in CLASS_INJECTED_FIELDS - is it just temporary to avoid the
>> synchronized
>> jdk/hotspot change? What if you push both changes through the same
>> forest jdk9/hs-rt?
>
> The new field classLoader is explicit and not injected by the jvm. The
> jvm looks up the offset of the field when it lays out the class Class
> and initializes it directly in the instance of java.lang.Class. So it
> isn't added to the injected fields.
Right... I missed that obvious one.
>>
>> A side note - Christian has a patch attached in this bug that can
>> improve the performance when running with SecurityManager on the
>> classloader related check for permission. Can you create a new
>> bug to track that so that it won't get lost once this bug is
>> resolved?
>
> I didn't completely follow the relationship between Chris's patch and
> this bug. Yes, I'll file a new bug or ask someone who knows more
> about it to do so.
>
Thanks. The patch requires more investigation in the bootstrapping side
of thing.
> The plan is to push both through hs-rt.
Great. That's what I wanted to know.
Mandy
More information about the jdk9-dev
mailing list