RFR: 8345169: Implement JEP XXX: Remove the 32-bit x86 Port

Aleksey Shipilev shade at openjdk.org
Thu Jan 9 09:38:38 UTC 2025


On Thu, 9 Jan 2025 01:17:49 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> These are interpreter "intrinsics" that are only implemented on x86_32 to handle x87 FPU pecularities. Look around for `TemplateInterpreterGenerator::generate_Float_intBitsToFloat_entry`, for example.
>
> Hmmm ... okay ... I see something "special" is done only on x86_32, but what is done seems to have nothing to do with x87 code.
> 
> Just to be clear these Java methods still get intrinsified, it is just handled in a different way - right?

It *is* about x87 handling of NaNs, a common problem for x86_32 code in Hotspot, you can read about this mess in [JDK-8076373](https://bugs.openjdk.org/browse/JDK-8076373), if you are interested. If we allow to use native implementations of these conversion methods, we get into trouble with NaNs. What these interpreter intrinsics do on x86_32: going for SSE if available, thus avoiding x87. Since this is a correctness problem, these intrinsics go all the way down to interpreter as well. There is still a gaping hole when SSE is not available, but then we have no choice than to use x87 and have all the relevant issues. 

But all of this is only a headache for x86_32, all other platforms do not have these interpreter intrinsics implemented. With x86_32 going away, we can finally yank these and relevant scaffolding out.

The C1/C2 intrinsics are still up and enabled for supported platforms: those are for performance :)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22567#discussion_r1908436596


More information about the shenandoah-dev mailing list