< prev index next >
src/hotspot/cpu/x86/stubGenerator_x86_64.cpp
Print this page
*** 1827,1837 ****
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_INT;
! BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
// 'from', 'to' and 'count' are now valid
__ movptr(dword_count, count);
__ shrptr(count, 1); // count => qword_count
--- 1827,1837 ----
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_INT;
! BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
// 'from', 'to' and 'count' are now valid
__ movptr(dword_count, count);
__ shrptr(count, 1); // count => qword_count
*** 1921,1931 ****
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_INT;
! BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler();
// no registers are destroyed by this call
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
assert_clean_int(count, rax); // Make sure 'count' is clean int.
// 'from', 'to' and 'count' are now valid
--- 1921,1931 ----
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_INT;
! BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
// no registers are destroyed by this call
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
assert_clean_int(count, rax); // Make sure 'count' is clean int.
// 'from', 'to' and 'count' are now valid
*** 2025,2035 ****
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_LONG;
! BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, qword_count);
// Copy from low to high addresses. Use 'to' as scratch.
__ lea(end_from, Address(from, qword_count, Address::times_8, -8));
__ lea(end_to, Address(to, qword_count, Address::times_8, -8));
--- 2025,2035 ----
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_LONG;
! BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, qword_count);
// Copy from low to high addresses. Use 'to' as scratch.
__ lea(end_from, Address(from, qword_count, Address::times_8, -8));
__ lea(end_to, Address(to, qword_count, Address::times_8, -8));
*** 2118,2128 ****
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_LONG;
! BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, qword_count);
__ jmp(L_copy_bytes);
// Copy trailing qwords
--- 2118,2128 ----
if (aligned) {
decorators |= ARRAYCOPY_ALIGNED;
}
BasicType type = is_oop ? T_OBJECT : T_LONG;
! BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, qword_count);
__ jmp(L_copy_bytes);
// Copy trailing qwords
*** 2298,2308 ****
if (dest_uninitialized) {
decorators |= AS_DEST_NOT_INITIALIZED;
}
BasicType type = T_OBJECT;
! BarrierSetAssembler *bs = Universe::heap()->barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
// Copy from low to high addresses, indexed from the end of each array.
__ lea(end_from, end_from_addr);
__ lea(end_to, end_to_addr);
--- 2298,2308 ----
if (dest_uninitialized) {
decorators |= AS_DEST_NOT_INITIALIZED;
}
BasicType type = T_OBJECT;
! BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
bs->arraycopy_prologue(_masm, decorators, type, from, to, count);
// Copy from low to high addresses, indexed from the end of each array.
__ lea(end_from, end_from_addr);
__ lea(end_to, end_to_addr);
< prev index next >