mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-13 03:45:19 +00:00
8155967: aarch64: fix register usage in block zeroing
Fix array fill stub to use r10 == base and r11 == count Reviewed-by: aph
This commit is contained in:
parent
0091cd268a
commit
fbac01c4e5
@ -4790,6 +4790,7 @@ void MacroAssembler::block_zero(Register base, Register cnt, bool is_large)
|
||||
Label base_aligned;
|
||||
|
||||
assert_different_registers(base, cnt, rscratch1);
|
||||
guarantee(base == r10 && cnt == r11, "fix register usage");
|
||||
|
||||
Register tmp = rscratch1;
|
||||
Register tmp2 = rscratch2;
|
||||
|
||||
@ -2082,7 +2082,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||
const Register to = c_rarg0; // source array address
|
||||
const Register value = c_rarg1; // value
|
||||
const Register count = c_rarg2; // elements count
|
||||
const Register cnt_words = c_rarg3; // temp register
|
||||
|
||||
const Register bz_base = r10; // base for block_zero routine
|
||||
const Register cnt_words = r11; // temp register
|
||||
|
||||
__ enter();
|
||||
|
||||
@ -2152,7 +2154,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ cmp(cnt_words, BlockZeroingLowLimit >> 3);
|
||||
__ ccmp(value, 0 /* comparing value */, 0 /* NZCV */, Assembler::GE);
|
||||
__ br(Assembler::NE, non_block_zeroing);
|
||||
__ block_zero(to, cnt_words, true);
|
||||
__ mov(bz_base, to);
|
||||
__ block_zero(bz_base, cnt_words, true);
|
||||
__ mov(to, bz_base);
|
||||
__ b(rest);
|
||||
__ bind(non_block_zeroing);
|
||||
__ fill_words(to, cnt_words, value);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user