RFR: 8209976: Improve iteration over non-JavaThreads
david.holmes at oracle.com
Mon Sep 3 06:44:31 UTC 2018
I know this has been pushed now but if we're going to re-jiggle the
Thread hierarchy then we can maybe do better. I never liked the
introduction of NamedThread and it seems even more superfluous now - all
threads can/should have names, there's really no reason why the
WatcherThread or JfrSamplerThread should be special in this regard.
Arguably you don't need NonJavaThread as if you don't derive from
JavaThread then you are by definition a non-JavaThread - but if this
classification makes things easier so be it.
IIRC we only use is_Java_thread() due to a lack of RTTI in our C++
usage. Is that likely to change going forward?
Meanwhile should is_Java_thread() be pure virtual in Thread and
overridden in JavaThread and NonJavaThread ?
On 27/08/2018 9:09 AM, Kim Barrett wrote:
> Please review this change to improve the iteration over
> non-JavaThreads. This change introduces a new base class
> NonJavaThread, which should be a base for any Thread class that isn't
> a JavaThread. The recently introduced iteration over NamedThreads
> (JDK-8209850) is moved to this new class. This allows the
> re-implementation of Threads::non_java_threads_do using that list.
> Note: Perhaps CollectedHeap::gc_threads_do could be replaced by a
> Threads::gc_threads_do that is implemented as an iteration over the
> non-JavaThreads with a filter to select GC-related thread types. That
> isn't being done as part of this change though.
> mach5 tier1-3, hs-tier4-5 in conjunction with a fix for JDK-8209975.
> Local testing of just this change.
More information about the hotspot-dev