提交 bd639cd2 编写于 作者: V vkempik

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

Summary: Add missing cache_line_size > 0 checks.
Reviewed-by: kvn
上级 fafb2a25
...@@ -4261,6 +4261,7 @@ void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Lab ...@@ -4261,6 +4261,7 @@ void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Lab
assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing"); assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing");
Register end = count; Register end = count;
int cache_line_size = VM_Version::prefetch_data_size(); 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 // Minimum count when BIS zeroing can be used since
// it needs membar which is expensive. // it needs membar which is expensive.
int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit); int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit);
......
...@@ -74,7 +74,7 @@ void VM_Version::initialize() { ...@@ -74,7 +74,7 @@ void VM_Version::initialize() {
AllocatePrefetchDistance = AllocatePrefetchStepSize; AllocatePrefetchDistance = AllocatePrefetchStepSize;
} }
if (AllocatePrefetchStyle == 3 && !has_blk_init()) { if (AllocatePrefetchStyle == 3 && (!has_blk_init() || cache_line_size <= 0)) {
warning("BIS instructions are not available on this CPU"); warning("BIS instructions are not available on this CPU");
FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1); FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
} }
...@@ -138,7 +138,7 @@ void VM_Version::initialize() { ...@@ -138,7 +138,7 @@ void VM_Version::initialize() {
FLAG_SET_DEFAULT(InteriorEntryAlignment, 4); FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
} }
if (is_niagara_plus()) { if (is_niagara_plus()) {
if (has_blk_init() && UseTLAB && if (has_blk_init() && (cache_line_size > 0) && UseTLAB &&
FLAG_IS_DEFAULT(AllocatePrefetchInstr)) { FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
// Use BIS instruction for TLAB allocation prefetch. // Use BIS instruction for TLAB allocation prefetch.
FLAG_SET_ERGO(intx, AllocatePrefetchInstr, 1); FLAG_SET_ERGO(intx, AllocatePrefetchInstr, 1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册