On Tue, 11 May 2021 01:56:21 GMT, David Holmes <[email protected]> wrote:

>> Our code is littered with API's that take, or manifest, a Thread* and then 
>> assert/guarantee that it must be a JavaThread, rather than 
>> taking/manifesting a JavaThread in the first place. The main reason for this 
>> is that the TRAPS macro, used in relation to exception generation and 
>> processing, is declared as "Thread* THREAD". In practice only JavaThreads 
>> that can execute Java code can generate arbitrary exceptions, because it 
>> requires executing Java code. In other places we can get away with other 
>> kinds of threads "throwing" exceptions because they are only pre-allocated 
>> instances that require no Java code execution (e.g. OOME), or when executed 
>> by a non-JavaThread the code actually by-passes the logic would throw an 
>> exception. Such code also eventually clears the exception and reports the 
>> OOM by some other means. We have been progressively untangling these code 
>> paths and modifying TRAPS/CHECK usage so that only JavaThreads will call 
>> TRAPS methods and throw exceptions. Having done t
 hat pre-work we are now ready to convert TRAPS to be "JavaThread* THREAD" and 
that is what this change does. The resulting changes are largely mechanical:
>> 
>> - declarations of "Thread* THREAD" become "JavaThread* THREAD" (where THREAD 
>> is needed for exceptions, otherwise THREAD is renamed to current)
>> - methods that took a Thread* parameter that was always THREAD, now take a 
>> JavaThread* param
>> - Manifestations of Thread::current() become JavaThread::current()
>> - THREAD->as_Java_thread() becomes just THREAD
>> - THREAD->is_Java_thread() is reworked so that THREAD is "current"
>> 
>> There are still places where a CompilerThread (which is a JavaThread but may 
>> not be able to execute Java code) calls a TRAPS function (primarily where 
>> OOME is possible). Fixing that would be a future RFE and may not be possible 
>> without reworking a lot of the allocation code paths.
>> 
>> Testing:
>>  - tiers 1-8 on Linux-x64
>>  - all builds in tiers 1-4
>>  - tiers 1-3 on all platforms
>> 
>> Thanks,
>> David
>
> David Holmes has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Review feedback from Serguei

Marked as reviewed by sspitsyn (Reviewer).

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

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

Reply via email to