On Fri, 26 Jan 2024 21:20:04 GMT, Chris Plummer <[email protected]> wrote:
>> In PointerFinder.java we have some code to determine if a pointer is in a
>> TLAB, but it only executes for the SerialGC. It should work for all GCs, so
>> I moved the code out of the SerialGC block.
>>
>> I also cleaned up the printing in PointerLocation. java a bit so when not
>> using verbose mode not as much info about the tlab address is printed. This
>> is consistent with other addresses, such as java stack addresses, which is
>> what I modeled this change on.
>>
>> It's hard to test this change since it is hard to consistently get an
>> address to be in the tlab. I wrote a little test program that just sits in a
>> loop doing allocations. I attached to it with clhsdb and ran the
>> threadcontext command, which does a fincpc on each register. About half the
>> time the main thread was suspended in a frame where some registers where
>> pointing into the tlab, and I confirmed this was the case for both SerialGC
>> and G1. Here's an example of one register with verbose off and verbose on:
>>
>> rsi: 0x000000008a5d4448: In TLAB for thread "main"
>> sun.jvm.hotspot.runtime.JavaThread@0x00007ffa24029000
>>
>> rsi: 0x000000008a5d4448: In TLAB for thread ("main" #1 prio=5
>> tid=0x00007ffa24029000 nid=25392 runnable [0x0000000000000000]
>> java.lang.Thread.State: RUNNABLE
>> JavaThread state: _thread_in_java
>> )
>> [0x000000008a5d4448,0x000000008ab724b8,0x000000008b0c0250,{0x000000008b0c0490})
>>
>> For testing I ran all tier1, tier2, and tier5 svc tests (still in progress)
>
> Chris Plummer has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Get rid of inTLAB field. Not needed
The fix looks good.
-------------
Marked as reviewed by sspitsyn (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/17494#pullrequestreview-1858878750