8157184: java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java failed with a fatal error

Add missing cache_line_size > 0 checks.

Reviewed-by: vlivanov, kbarrett
This commit is contained in:
Vladimir Kozlov 2016-05-19 11:01:38 -07:00
parent 7bd620bff1
commit 5acfcd3615
2 changed files with 3 additions and 2 deletions

View file

@ -4767,6 +4767,7 @@ void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Lab
assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing");
Register end = count;
int cache_line_size = VM_Version::prefetch_data_size();
assert(cache_line_size > 0, "cache line size should be known for this code");
// Minimum count when BIS zeroing can be used since
// it needs membar which is expensive.
int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit);

View file

@ -49,7 +49,7 @@ void VM_Version::initialize() {
AllocatePrefetchDistance = allocate_prefetch_distance();
AllocatePrefetchStyle = allocate_prefetch_style();
if (!has_blk_init()) {
if (!has_blk_init() || cache_line_size <= 0) {
if (AllocatePrefetchInstr == 1) {
warning("BIS instructions required for AllocatePrefetchInstr 1 unavailable");
FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
@ -87,7 +87,7 @@ void VM_Version::initialize() {
FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
}
if (is_niagara_plus()) {
if (has_blk_init() && UseTLAB &&
if (has_blk_init() && (cache_line_size > 0) && UseTLAB &&
FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
// Use BIS instruction for TLAB allocation prefetch.
FLAG_SET_DEFAULT(AllocatePrefetchInstr, 1);