4259 // Use BIS for zeroing (count is in bytes). |
4259 // Use BIS for zeroing (count is in bytes). |
4260 void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Label& Ldone) { |
4260 void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Label& Ldone) { |
4261 assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing"); |
4261 assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing"); |
4262 Register end = count; |
4262 Register end = count; |
4263 int cache_line_size = VM_Version::prefetch_data_size(); |
4263 int cache_line_size = VM_Version::prefetch_data_size(); |
|
4264 assert(cache_line_size > 0, "cache line size should be known for this code"); |
4264 // Minimum count when BIS zeroing can be used since |
4265 // Minimum count when BIS zeroing can be used since |
4265 // it needs membar which is expensive. |
4266 // it needs membar which is expensive. |
4266 int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit); |
4267 int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit); |
4267 |
4268 |
4268 Label small_loop; |
4269 Label small_loop; |