RFR: 8193559: ugly DO_JAVA_THREADS macro should be replaced [v4]
kbarrett at openjdk.java.net
Fri Jul 30 04:28:28 UTC 2021
On Fri, 30 Jul 2021 00:00:56 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].
> Daniel D. Daugherty has updated the pull request incrementally with one additional commit since the last revision:
> 8193559.kbarrett.part1 - Kim's proposed rewrite using newer C++ features.
src/hotspot/share/runtime/threadSMR.inline.hpp line 59:
> 57: assert_not_singular();
> 58: assert_dereferenceable();
> 59: Prefetch::read(const_cast<JavaThread**>(_thread_ptr), PrefetchScanIntervalInBytes);
This prefetch is included because the old code had it. But I'm dubious about it. This is just linear iteration through an array, which seems like the canonical best case for leaving it to the hardware, rather than doing cachelinesize/ptrsize software prefetches per cache line. I'm hoping the original authors can comment.
More information about the hotspot-gc-dev