RFR: 8193559: ugly DO_JAVA_THREADS macro should be replaced

Kim Barrett kbarrett at openjdk.java.net
Fri Jul 2 21:59:52 UTC 2021

On Fri, 2 Jul 2021 16:03:57 GMT, Daniel D. Daugherty <dcubed at openjdk.org> wrote:

> This is a simple rewrite of what is "Possibly the ugliest for loop the world has seen."
> Thanks to @stefank for the draft proposed fix. Thanks to @fisk for providing this
> piece of history that I'm finally getting around to cleaning up. While this macro has
> been with us for a long time, its time has passed...
> Tested with Mach5 Tier[1-3].

Changes requested by kbarrett (Reviewer).

src/hotspot/share/runtime/thread.cpp line 2470:

> 2468: 
> 2469:     JavaThreadPrefetchedIterator(ThreadsList* list) :
> 2470:       _list(list), _end(list->threads() + list->length()), _current(list->threads()) {}

I don't see any uses of the `_list` member.

src/hotspot/share/runtime/thread.cpp line 2484:

> 2482: 
> 2483: #define DO_JAVA_THREADS(LIST, X) \
> 2484:   for (JavaThreadPrefetchedIterator iter(LIST); JavaThread* X = iter.current(); iter.next())

The condition is an implicit conversion to bool, which is disallowed
by the style guide.  In fact, it's a declaration, which is
specifically called out by the style guide.  When I revised the style
guide I made explicit mention of that usage because I'd tried to use
that sort of thing several years ago and got several complaints.  So
it's not that I personally think that usage is bad; rather, I was
hoping someone would take on the little project of convincing the team
it was good.  I don't have any objection to this part of the change.


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

More information about the hotspot-gc-dev mailing list