RFR 8226921 [lworld] Refactor argument shuffling code for ValueTypePassFieldsAsArgs
    Ioi Lam 
    ioi.lam at oracle.com
       
    Fri Jun 28 05:16:21 UTC 2019
    
    
  
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