equal
deleted
inserted
replaced
843 } |
843 } |
844 if (aligned) { |
844 if (aligned) { |
845 decorators |= ARRAYCOPY_ALIGNED; |
845 decorators |= ARRAYCOPY_ALIGNED; |
846 } |
846 } |
847 |
847 |
848 BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler(); |
848 BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler(); |
849 bs->arraycopy_prologue(_masm, decorators, t, from, to, count); |
849 bs->arraycopy_prologue(_masm, decorators, t, from, to, count); |
850 |
850 |
851 __ subptr(to, from); // to --> to_from |
851 __ subptr(to, from); // to --> to_from |
852 __ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element |
852 __ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element |
853 __ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp |
853 __ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp |
1032 } |
1032 } |
1033 if (aligned) { |
1033 if (aligned) { |
1034 decorators |= ARRAYCOPY_ALIGNED; |
1034 decorators |= ARRAYCOPY_ALIGNED; |
1035 } |
1035 } |
1036 |
1036 |
1037 BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler(); |
1037 BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler(); |
1038 bs->arraycopy_prologue(_masm, decorators, t, from, to, count); |
1038 bs->arraycopy_prologue(_masm, decorators, t, from, to, count); |
1039 |
1039 |
1040 // copy from high to low |
1040 // copy from high to low |
1041 __ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element |
1041 __ cmpl(count, 2<<shift); // Short arrays (< 8 bytes) copy by element |
1042 __ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp |
1042 __ jcc(Assembler::below, L_copy_4_bytes); // use unsigned cmp |
1387 if (dest_uninitialized) { |
1387 if (dest_uninitialized) { |
1388 decorators |= AS_DEST_NOT_INITIALIZED; |
1388 decorators |= AS_DEST_NOT_INITIALIZED; |
1389 } |
1389 } |
1390 |
1390 |
1391 BasicType type = T_OBJECT; |
1391 BasicType type = T_OBJECT; |
1392 BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler(); |
1392 BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler(); |
1393 bs->arraycopy_prologue(_masm, decorators, type, from, to, count); |
1393 bs->arraycopy_prologue(_masm, decorators, type, from, to, count); |
1394 |
1394 |
1395 // Copy from low to high addresses, indexed from the end of each array. |
1395 // Copy from low to high addresses, indexed from the end of each array. |
1396 __ lea(end_from, end_from_addr); |
1396 __ lea(end_from, end_from_addr); |
1397 __ lea(end_to, end_to_addr); |
1397 __ lea(end_to, end_to_addr); |