On Wed, 12 May 2021 14:06:46 GMT, Vladimir Ivanov <[email protected]> wrote:
>> Maurizio Cimadamore has updated the pull request incrementally with one
>> additional commit since the last revision:
>>
>> * Remove unused imports
>> * Fix broken javadoc after removal of @throws clauses
>> * Remove other `@CallerSensitive` annotations from `AbstractCLinker`
>
> src/hotspot/cpu/x86/universalUpcallHandler_x86_64.cpp line 472:
>
>> 470: __ block_comment("} preserve_callee_saved_regs ");
>> 471:
>> 472: // TODO mxcsr
>
> Anything left to do with mxcsr?
I guess this slipped through with the initial PR.
JNI code loads the default value of mxcsr here and saves/restores the incoming
native value:
https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp#L265-L298
However, it does nothing on Windows, while the Windows x64 ABI also defines
mxcsr to have a non-volatile portion (i.e. that should be saved and restored):
https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-160#mxcsr
I think this made me a bit unsure about the need for saving and restoring
mxcsr, and wanted to find an actual test case that causes a problem, rather
than just copy-pasting the code (or at least understand it a bit better). But,
at this time I haven't gotten to that yet.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3699