< 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 >