[aarch64-port-dev ] System.arraycopy() intrinsics

Andrew Haley aph at redhat.com
Mon Sep 23 09:58:29 PDT 2013


On 09/23/2013 04:26 PM, Andrew Dinn wrote:
> That requires adding
> 
>    __ c_stub_prolog(3, 0, MacroAssembler::ret_type_void);
> 
> at the start of StubGenerator methods generate_disjoint_copy(),
> generate_conjoint_copy() and generate_checkcast_copy(). It also requires
> changing the code above to remove the if/then clauses and only make the
> VM_leaf call plus reverting some similar call in c1_LIRAssembler (to the
> generic copy routine) back to a VM_leaf call. This restores both calls
> to be as per the equivalent x86 code.
> 
> The patch below fixes this problem in C2 by making the stubs x86
> callable.

Oh yuck, that's disgusting.  Is there really no way that C2 can't just
do what C1 does, and call via an x86 thunk only if it's absolutely
necessary?

The arraycopy function should always be ARM code.  I'll grant
ypu that it should not be an ExternalAddress -- that's just a
mistake.

Andrew.




More information about the aarch64-port-dev mailing list