RFR: Save both IU and FPU state in WB stub around runtime call

Aleksey Shipilev shade at redhat.com
Tue Nov 20 14:54:38 UTC 2018


On 11/20/18 3:46 PM, Roman Kennke wrote:
>> On 11/20/18 2:19 PM, Roman Kennke wrote:
>>> http://cr.openjdk.java.net/~rkennke/fixwbstub/webrev.00/
>>
>> *) It is unfortunate we have to restore %rax and do the RB part of WB on this path. I don't see an
>> easy way out, though. Please put the comment near RB on rax:
>>   // Need to restore the WB result, which have to be the forwarded object.
> 
> The alternative would easy but ugly in other ways: do what we do now,
> i.e. push all (GP) registers one after the other, do the FPU parts with
> push_FPU_state() and pop_FPU_state(), and pop the GP registers in
> reverse order, except %rax. What would you prefer?

Both are ugly. RB on %eax seems a bit less ugly.

I think AArch64 makes it non-ugly by doing MacroAssembler::push_call_clobbered_registers, but no
such luck at x86.

-Aleksey



More information about the shenandoah-dev mailing list