hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
changeset 40080 00aba4bf1a83
parent 40023 49d647eeb7f0
child 40643 49539fc14e5a
equal deleted inserted replaced
40079:40d48ddc12bc 40080:00aba4bf1a83
  2344     __ lsrw(cnt_words, count, 3 - shift); // number of words
  2344     __ lsrw(cnt_words, count, 3 - shift); // number of words
  2345     __ bfi(value, value, 32, 32);         // 32 bit -> 64 bit
  2345     __ bfi(value, value, 32, 32);         // 32 bit -> 64 bit
  2346     __ subw(count, count, cnt_words, Assembler::LSL, 3 - shift);
  2346     __ subw(count, count, cnt_words, Assembler::LSL, 3 - shift);
  2347     if (UseBlockZeroing) {
  2347     if (UseBlockZeroing) {
  2348       Label non_block_zeroing, rest;
  2348       Label non_block_zeroing, rest;
       
  2349       Register tmp = rscratch1;
  2349       // count >= BlockZeroingLowLimit && value == 0
  2350       // count >= BlockZeroingLowLimit && value == 0
  2350       __ cmp(cnt_words, BlockZeroingLowLimit >> 3);
  2351       __ subs(tmp, cnt_words, BlockZeroingLowLimit >> 3);
  2351       __ ccmp(value, 0 /* comparing value */, 0 /* NZCV */, Assembler::GE);
  2352       __ ccmp(value, 0 /* comparing value */, 0 /* NZCV */, Assembler::GE);
  2352       __ br(Assembler::NE, non_block_zeroing);
  2353       __ br(Assembler::NE, non_block_zeroing);
  2353       __ mov(bz_base, to);
  2354       __ mov(bz_base, to);
  2354       __ block_zero(bz_base, cnt_words, true);
  2355       __ block_zero(bz_base, cnt_words, true);
  2355       __ mov(to, bz_base);
  2356       __ mov(to, bz_base);