RFR 8226921 [lworld] Refactor argument shuffling code for ValueTypePassFieldsAsArgs

Dmitry Samersoff dms at samersoff.net
Mon Jul 8 08:56:08 UTC 2019


Ioi,

Sorry for delay. The code works on aarch64, so please push it.

-Dmitry

On 08.07.19 07:00, Ioi Lam wrote:
> Hi Dmitry,
> 
> Did you get a chance to use the code? If you don't see any big issues, I
> am thinking of pushing it to avoid code rot. We can do further
> refactoring if necessary when you implement the Aarch64 port.
> 
> Thanks
> - Ioi
> 
> On 6/28/19 12:31 AM, Dmitry Samersoff wrote:
>> Hi Ioi,
>>
>> Flicked through your patch - Very Cool!
>>
>> I'll apply it and check what is happening on aarch64 early next week.
>>
>> -Dmitry
>>
>> On 28.06.19 08:16, Ioi Lam wrote:
>>> https://bugs.openjdk.java.net/browse/JDK-8226921
>>> http://cr.openjdk.java.net/~iklam/valhalla/8226921-refactor-ValueTypePassFieldsAsArgs-args-shuffling.v01/
>>>
>>>
>>>
>>> Hi Dmitry,
>>>
>>> Could you try this patch and see if it works for the aarch64 port?
>>>
>>> To make it compile, you have to add these declaration into
>>> macroAssembler_aarch64.hpp:
>>>
>>>    bool move_helper(VMReg from, VMReg to, BasicType bt, RegState
>>> reg_state[], int ret_off, int extra_stack_offset);
>>>    bool unpack_value_helper(const GrowableArray<SigEntry>* sig, int&
>>> sig_index, VMReg from, VMRegPair* regs_to, int& to_index,
>>>                             RegState reg_state[], int ret_off, int
>>> extra_stack_offset);
>>>    bool pack_value_helper(const GrowableArray<SigEntry>* sig, int&
>>> sig_index, int vtarg_index,
>>>                           VMReg to, VMRegPair* regs_from, int
>>> regs_from_count, int& from_index, RegState reg_state[],
>>>                           int ret_off, int extra_stack_offset);
>>>    int shuffle_value_args(bool is_packing, bool receiver_only, int
>>> extra_stack_offset,
>>>                           BasicType* sig_bt, const
>>> GrowableArray<SigEntry>* sig_cc,
>>>                           int args_passed, int args_on_stack, VMRegPair*
>>> regs,
>>>                           int args_passed_to, int args_on_stack_to,
>>> VMRegPair* regs_to);
>>>    VMReg spill_reg_for(VMReg reg);
>>>
>>> I think I have removed all x64-ism from macroAssembler_common.cpp, but
>>> I have no way of verifying that :-(
>>>
>>> I ran all the Valhalla tests on my linux/x64 boxes and saw no
>>> regression.
>>>
>>> Thanks
>>> - Ioi
>>>
> 


More information about the valhalla-dev mailing list