RFR: 8351194: Clean up Hotspot SA after 32-bit x86 removal [v2]
Chris Plummer
cjplummer at openjdk.org
Thu Oct 16 17:33:36 UTC 2025
On Thu, 16 Oct 2025 13:58:09 GMT, Kerem Kat <krk at openjdk.org> wrote:
>> Remove 32-bit x86 specific code from the HotSpot Serviceability Agent following the removal of 32-bit x86 support.
>>
>> - Removed x86-specific implementations and ifdef blocks.
>> - Renamed files with X86 in the name when they are also used from AMD64, e.g. `X86Frame` → `AMD64Frame`.
>> - Cleaned up platform detection logic in `PlatformInfo`.
>> - Updated documentation references.
>
> Kerem Kat has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains two commits:
>
> - Merge branch 'master' into clean-x86-sa-JDK-8351194
> - Clean up Hotspot SA after 32-bit x86 removal
src/jdk.hotspot.agent/doc/clhsdb.html line 35:
> 33: classes <font color="red">print all loaded Java classes with Klass*</font>
> 34: detach <font color="red">detach SA from current target</font>
> 35: dis address [ length ] <font color="red">disassemble (amd64) specified number of instructions from given address</font>
Two issues here. The first is I think this was previously incorrect in that SA supports any architecture for which it can find the hsdis library. You can probably just drop the amd64 reference or add "requires hsdis".
The 2nd issue is with amd64 vs x86_64. It seems in SA the two basically have the same meaning, and you see a lot of C code that checks for both. However, the java code seems to always just reference AMD64 (but also works with x86_64). I'm just wondering if this is consistent with the rest of hotspot, or if we should consider a rename to x86_64 instead of amd64.
BTW, at the platform level there are some amd64 vs x86_64 differences. The one I noted is that MacOSX is considered x86_64 and I think linux and windows are amd64. I'm not sure why, but I recently noted a test that had an @requires for `os.arch == "amd64"` and that kept is from running on macosx-x64 until the @requires was expanded to also allow for `os.arch == "x86_64"`. You should take extra care to make sure that these changes work with all the x86_64, including macosx. I see some places in the C code where we check for both amd64 and x86_64 and some where we only check for amd64. Perhaps x86_64 is not used by SA for macosx.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27844#discussion_r2436821824
More information about the serviceability-dev
mailing list