On Wed, 5 May 2021 10:16:29 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 th at 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 Thanks for the pre-review comments Coleen! I started responding to your various comments then realized they were the ones about breaking things up that you said I could now ignore :) ------------- PR: https://git.openjdk.java.net/jdk/pull/3877
