< prev index next >

src/cpu/sparc/vm/vm_version_sparc.cpp

Print this page

        

*** 87,99 **** FLAG_SET_DEFAULT(InteriorEntryAlignment, 4); } if (is_niagara_plus()) { 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); } if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) { if (AllocatePrefetchInstr == 0) { // Use different prefetch distance without BIS FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256); } else { --- 87,109 ---- FLAG_SET_DEFAULT(InteriorEntryAlignment, 4); } if (is_niagara_plus()) { if (has_blk_init() && (cache_line_size > 0) && UseTLAB && FLAG_IS_DEFAULT(AllocatePrefetchInstr)) { ! if (!has_sparc5_instr()) { ! // Use BIS instruction for TLAB allocation prefetch ! // on Niagara plus processors other than those based on CoreS4 FLAG_SET_DEFAULT(AllocatePrefetchInstr, 1); + } else { + // On CoreS4 processors use prefetch instruction + // to avoid partial RAW issue, also use prefetch style 3 + FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0); + if (FLAG_IS_DEFAULT(AllocatePrefetchStyle)) { + FLAG_SET_DEFAULT(AllocatePrefetchStyle, 3); } + } + } if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) { if (AllocatePrefetchInstr == 0) { // Use different prefetch distance without BIS FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256); } else {
< prev index next >