< prev index next >
src/cpu/x86/vm/vm_version_x86.cpp
Print this page
@@ -1289,31 +1289,41 @@
// Modern processors allow misaligned memory operations for vectors.
AlignVector = !UseUnalignedLoadStores;
}
#endif // COMPILER2
- if( AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch() ) AllocatePrefetchInstr=0;
- if( !supports_sse() && supports_3dnow_prefetch() ) AllocatePrefetchInstr = 3;
+ if (FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
+ if (AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch()) {
+ FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
+ } else if (!supports_sse() && supports_3dnow_prefetch()) {
+ FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
+ }
+ }
// Allocation prefetch settings
intx cache_line_size = prefetch_data_size();
- if( cache_line_size > AllocatePrefetchStepSize )
- AllocatePrefetchStepSize = cache_line_size;
+ if (FLAG_IS_DEFAULT(AllocatePrefetchDistance) &&
+ (cache_line_size > AllocatePrefetchStepSize)) {
+ FLAG_SET_DEFAULT(AllocatePrefetchStepSize, cache_line_size);
+ }
AllocatePrefetchDistance = allocate_prefetch_distance();
AllocatePrefetchStyle = allocate_prefetch_style();
if (is_intel() && cpu_family() == 6 && supports_sse3()) {
- if (AllocatePrefetchStyle == 2) { // watermark prefetching on Core
+ if (FLAG_IS_DEFAULT(AllocatePrefetchDistance) &&
+ (AllocatePrefetchStyle == 2)) { // watermark prefetching on Core
#ifdef _LP64
- AllocatePrefetchDistance = 384;
+ FLAG_SET_DEFAULT(AllocatePrefetchDistance, 384);
#else
- AllocatePrefetchDistance = 320;
+ FLAG_SET_DEFAULT(AllocatePrefetchDistance, 320);
#endif
}
if (supports_sse4_2() && supports_ht()) { // Nehalem based cpus
- AllocatePrefetchDistance = 192;
+ if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+ FLAG_SET_DEFAULT(AllocatePrefetchDistance, 192);
+ }
if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
FLAG_SET_DEFAULT(AllocatePrefetchLines, 4);
}
}
#ifdef COMPILER2
< prev index next >