RFR 8226921 [lworld] Refactor argument shuffling code for ValueTypePassFieldsAsArgs

Ioi Lam ioi.lam at oracle.com
Fri Jun 28 05:16:21 UTC 2019


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 

   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 
   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 
                          BasicType* sig_bt, const 
GrowableArray<SigEntry>* sig_cc,
                          int args_passed, int args_on_stack, VMRegPair* 
                          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.

- Ioi

More information about the valhalla-dev mailing list