RFR: 8261127: Cleanup THREAD/TRAPS/CHECK usage in CDS code
Coleen Phillimore
coleenp at openjdk.java.net
Thu Feb 4 23:19:42 UTC 2021
On Thu, 4 Feb 2021 13:36:19 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> While examining changes related to the TRAPS macro I noticed that a number of CDS related methods were passed a thread parameter that ended up never being used. Fixing this percolates up the call chain resulting in the ability to remove the parameter from other calls. In some places the thread is needed and has to be manifested via Thread::current(), but these are few and non-critical, and the cleanup of the API (including the benefit to the TRAPS work - see JDK-8252685) makes this worthwhile.
>>
>> I also changed `Thread* THREAD` to TRAPS where it relates to exception processing (even if CDS diverts to an abort path).
>>
>> Some uses of CHECK were removed that were only passing THREAD and the called code never triggers any exceptions.
>>
>> Added commentary where it is not clear why we don't use CHECK.
>>
>> Testing: local build and CI tiers 1-3
>>
>> Thanks,
>> David
>
> src/hotspot/share/memory/heapShared.cpp line 700:
>
>> 698: InstanceKlass* k = SystemDictionaryShared::find_builtin_class(klass_name);
>> 699: assert(k != NULL && k->is_shared_boot_class(), "sanity");
>> 700: resolve_classes_for_subgraph_of(k, THREAD /* exceptions are ignored */);
>
> They're not ignored though, they're passed to the caller of this function. Since this function passes TRAPS, the caller should have a CHECK/CATCH or handle the pending exception.
The are passed to the callers of this function as THREAD->_pending_exception will have an something in it.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2397
More information about the hotspot-runtime-dev
mailing list