On Fri, 17 Oct 2025 01:11:12 GMT, David Holmes <[email protected]> wrote:

>> 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.
>
> AMD64 is historical, it should all be changed to x86_64. The only place AMD64 
> is relevant is in actual AMD processor specific code.

Thanks for the reviews. 

I have updated the html to read "requires hsdis".

Regarding checking for `amd64` vs. `x86_64`, I found two cases where one of 
`x86_64` and `amd64` is checked but not the other:


test/hotspot/jtreg/compiler/c2/irTests/RotateLeftNodeLongIdealizationTests.java
34: * @requires os.arch == "x86_64" | os.arch == "aarch64" | (os.arch == 
"riscv64" & vm.cpu.features ~= ".*zbb.*")

test/hotspot/jtreg/compiler/c2/irTests/RotateLeftNodeIntIdealizationTests.java
34: * @requires os.arch == "x86_64" | os.arch == "aarch64" | (os.arch == 
"riscv64" & vm.cpu.features ~= ".*zbb.*")


I checked the C++ sources for `RotateLeftNode::Value` and 
`RotateLeftNode::Ideal`, I couldn't find any platform-specific logic that would 
justify excluding `amd64`. I have updated both tests to include `amd64` in 
their `@requires`.

Is there a specific `x86_64` vs. `amd64` check in C you would like to point out?

For the total annihilation of the `amd64` naming, I have cut an issue at 
[JDK-8370339](https://bugs.openjdk.org/browse/JDK-8370339).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27844#discussion_r2448649698

Reply via email to