RFR: 8259839 SystemDictionary exports too much implementation
Coleen Phillimore
coleenp at openjdk.java.net
Wed Jan 27 02:08:37 UTC 2021
On Wed, 27 Jan 2021 01:16:11 GMT, Daniel D. Daugherty <dcubed at openjdk.org> wrote:
>> I apologize for the large change but it's really a bunch of little cleanups combined made while trying to understand the code. Only number 8 below changes any behavior. Tested with tier1-8 (24hr Dacapo is still running).
>>
>> In systemDictionary.cpp:
>> 1. moved placeholder table and other table sizes into systemDictionary.cpp
>> 2. Made SystemDictionary::find_class() into a verification function called verify_dictionary_entry since that's what it was used for
>> 3. Moved a resolve_or_fail() down and removed redundant checks before calling handle_resolution_exception
>> 4. Fixed some comments
>> 5. child_name confused me. class_name and super_name are more meaningful in these contexts
>> 6. callers of find_or_define_instance_class had to check for a different klass return (with AllowParallelDefineClass), or an exception in order to deallocate one of the classes, so I wrapped it into a function and renamed find_or_define_instance_class into find_or_define_helper.
>> 7. find_placeholder() is really used to verify_placeholder(). Actually the verification was a nop. Fixing it found a bug in that CDS was calling define_instance_class rather than find_or_define_instance_class for parallelCapable class loader's that it shares, so verify_placeholder() was failing. Changed the CDS code to call find_or_define_instance_class instead.
>>
>> In systemDictionary.hpp, I moved the static data members and moved declarations around to make private and have a single protected block for SystemDictionaryShared to use.
>
>> Only number 8 below changes any behavior.
>
> There is no number 8 in your list. :-)
There was going to be 8 but 7 got subsumed it.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2247
More information about the hotspot-runtime-dev
mailing list