On Tue, 17 Oct 2023 10:56:33 GMT, Andrew Haley <a...@openjdk.org> wrote:

>> src/hotspot/cpu/x86/macroAssembler_x86.cpp line 5169:
>> 
>>> 5167:       // Perform a little arithmetic to make sure that denormal
>>> 5168:       // numbers are handled correctly, i.e. that the "Denormals Are
>>> 5169:       // Zeros" flag has not been set.
>> 
>> I don't understand what this part is doing. I thought it was simply checking 
>> so you could log/warn if the unexpected mode was detected. But it seems to 
>> cause MXCSR to not be restored when there is an issue, where I would expect 
>> you would always want to restore to overwrite the invalid mode the JNI call 
>> made. ??
>
> If we reach `FAIL`, MXCSR is reloaded from `addr_mxcsr_std()`, restoring 
> correct IEEE behaviour. That's what RestoreMXCSROnJNICalls is supposed to do, 
> as far as I can tell.
> 
> But I will take this part out, because there are other flags in MXCSR, so 
> there is a potential compatibility problem if e.g. the Precision Mask were 
> set in a JNI call.

Misread the code flow. So you were skipping the restore if you didn't think it 
was needed? The fact the restore was now conditional is what threw me.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/10661#discussion_r1362939998

Reply via email to