RFR: 8300926: Several startup regressions ~6-70% in 21-b6 all platforms [v2]

Robbin Ehn rehn at openjdk.org
Mon Feb 20 13:37:40 UTC 2023


On Fri, 17 Feb 2023 19:58:06 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Robbin Ehn has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Review fixes
>
> src/hotspot/share/classfile/systemDictionary.cpp line 1505:
> 
>> 1503:     // Add to systemDictionary - so other classes can see it.
>> 1504:     // Grabs and releases SystemDictionary_lock
>> 1505:     update_dictionary(THREAD, k, loader_data);
> 
> All these patterns are the same in class loading, except here we update the SystemDictionary after deoptimizing holding the Compile_lock and in your change we update it beforehand.
> I was going to suggest future cleanup of moving add_to_hierarchy and the associated deopt_scope code to InstanceKlass, but now I'm not sure if this order matters.
> Holding the Compile_lock while adding a class to the SystemDictionary and the code to hold the Compile_lock in ciEnv::get_klass_by_name() now doesn't make sense to me.  Klass is read lock free in the dictionary and temporarily holding the Compile_lock doesn't seem to do what it says:
> ``` 
> { // Grabbing the Compile_lock prevents systemDictionary updates
>   // during compilations.
> 
> 
> At any rate, I think the SystemDictionary might need to be updated after deoptimization is done.  Can you check this?

Ok

-------------

PR: https://git.openjdk.org/jdk/pull/12585


More information about the hotspot-dev mailing list