8272094: compiler/codecache/TestStressCodeBuffers.java crashes with "failed to allocate space for trampoline"

Reviewed-by: shade, kvn
This commit is contained in:
Andrew Haley 2022-05-17 09:02:06 +00:00
parent 8c977050aa
commit 0948c097a8
4 changed files with 11 additions and 6 deletions

@ -15423,7 +15423,11 @@ instruct clearArray_imm_reg(immL cnt, iRegP_R10 base, iRegL_R11 temp, Universe d
format %{ "ClearArray $cnt, $base" %}
ins_encode %{
__ zero_words($base$$Register, (uint64_t)$cnt$$constant);
address tpc = __ zero_words($base$$Register, (uint64_t)$cnt$$constant);
if (tpc == NULL) {
ciEnv::current()->record_failure("CodeCache is full");
return;
}
%}
ins_pipe(pipe_class_memory);

@ -4820,7 +4820,6 @@ address MacroAssembler::zero_words(Register ptr, Register cnt)
address tpc = trampoline_call(zero_blocks);
if (tpc == NULL) {
DEBUG_ONLY(reset_labels(around));
assert(false, "failed to allocate space for trampoline");
return NULL;
}
} else {
@ -4854,10 +4853,11 @@ address MacroAssembler::zero_words(Register ptr, Register cnt)
// cnt: Immediate count in HeapWords.
//
// r10, r11, rscratch1, and rscratch2 are clobbered.
void MacroAssembler::zero_words(Register base, uint64_t cnt)
address MacroAssembler::zero_words(Register base, uint64_t cnt)
{
guarantee(zero_words_block_size < BlockZeroingLowLimit,
"increase BlockZeroingLowLimit");
address result = nullptr;
if (cnt <= (uint64_t)BlockZeroingLowLimit / BytesPerWord) {
#ifndef PRODUCT
{
@ -4891,10 +4891,12 @@ void MacroAssembler::zero_words(Register base, uint64_t cnt)
stp(zr, zr, Address(base, i * wordSize));
}
BLOCK_COMMENT("} zero_words");
result = pc();
} else {
mov(r10, base); mov(r11, cnt);
zero_words(r10, r11);
result = zero_words(r10, r11);
}
return result;
}
// Zero blocks of memory by using DC ZVA.

@ -1291,7 +1291,7 @@ public:
int elem_size);
void fill_words(Register base, Register cnt, Register value);
void zero_words(Register base, uint64_t cnt);
address zero_words(Register base, uint64_t cnt);
address zero_words(Register ptr, Register cnt);
void zero_dcache_blocks(Register base, Register cnt);

@ -68,7 +68,6 @@ compiler/rtm/print/TestPrintPreciseRTMLockingStatistics.java 8183263 generic-x64
compiler/c2/Test8004741.java 8235801 generic-all
compiler/codecache/jmx/PoolsIndependenceTest.java 8264632 macosx-all
compiler/codecache/TestStressCodeBuffers.java 8272094 generic-aarch64
#############################################################################