RFR: 8264126: Remove TRAPS/THREAD parameter for class loading functions

Coleen Phillimore coleenp at openjdk.java.net
Wed Mar 24 19:27:39 UTC 2021


On Wed, 24 Mar 2021 19:02:26 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> find_constrained_instance_or_array_klass only passes THREAD so that it can be used in a MutexLocker for SystemDictionary_lock. This can use the MutexLocker that gets Thread::current() without any harm to performance.
>> 
>> The other functions add_loader_constraint, record_linking_constraints, and check_signature_loaders fall out from that.
>> 
>> check_signature_loaders should throw an exception but it unfortunately makes the caller construct the exception message so it doesn't.
>> 
>> Also: is_shared_class_visible{_impl}
>> 
>> Tested with tier1 on 4 Oracle platforms (in progress)
>
> src/hotspot/share/classfile/systemDictionary.cpp line 1842:
> 
>> 1840:       klass = Universe::typeArrayKlassObj(t);
>> 1841:     } else {
>> 1842:       MutexLocker mu(SystemDictionary_lock);
> 
> Since this is a clean up RFE, I think it's better to avoid changes that may impact performance. I would avoid adding calls to Thread::current() -- except for cases inside logging code. Maybe change TRAPS to Thread* current and move it to the first parameter? I.e., how you changed SystemDictionaryShared::check_linking_constraints().

This will not impact performance though, since we're already taking a lock.

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

PR: https://git.openjdk.java.net/jdk/pull/3176


More information about the hotspot-dev mailing list