On Wed, 12 May 2021 14:53:39 GMT, Jorn Vernee <jver...@openjdk.org> wrote:

>> 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.

Thanks for the pointers. It would be safer for now to align the behavior with 
the call stub.

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

PR: https://git.openjdk.java.net/jdk/pull/3699

Reply via email to