555 if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3; |
555 if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3; |
556 if( AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch() ) AllocatePrefetchInstr=0; |
556 if( AllocatePrefetchInstr == 3 && !supports_3dnow_prefetch() ) AllocatePrefetchInstr=0; |
557 if( !supports_sse() && supports_3dnow_prefetch() ) AllocatePrefetchInstr = 3; |
557 if( !supports_sse() && supports_3dnow_prefetch() ) AllocatePrefetchInstr = 3; |
558 |
558 |
559 // Allocation prefetch settings |
559 // Allocation prefetch settings |
560 intx cache_line_size = L1_data_cache_line_size(); |
560 intx cache_line_size = prefetch_data_size(); |
561 if( cache_line_size > AllocatePrefetchStepSize ) |
561 if( cache_line_size > AllocatePrefetchStepSize ) |
562 AllocatePrefetchStepSize = cache_line_size; |
562 AllocatePrefetchStepSize = cache_line_size; |
563 if( FLAG_IS_DEFAULT(AllocatePrefetchLines) ) |
563 |
564 AllocatePrefetchLines = 3; // Optimistic value |
|
565 assert(AllocatePrefetchLines > 0, "invalid value"); |
564 assert(AllocatePrefetchLines > 0, "invalid value"); |
566 if( AllocatePrefetchLines < 1 ) // set valid value in product VM |
565 if( AllocatePrefetchLines < 1 ) // set valid value in product VM |
567 AllocatePrefetchLines = 1; // Conservative value |
566 AllocatePrefetchLines = 3; |
|
567 assert(AllocateInstancePrefetchLines > 0, "invalid value"); |
|
568 if( AllocateInstancePrefetchLines < 1 ) // set valid value in product VM |
|
569 AllocateInstancePrefetchLines = 1; |
568 |
570 |
569 AllocatePrefetchDistance = allocate_prefetch_distance(); |
571 AllocatePrefetchDistance = allocate_prefetch_distance(); |
570 AllocatePrefetchStyle = allocate_prefetch_style(); |
572 AllocatePrefetchStyle = allocate_prefetch_style(); |
571 |
573 |
572 if( is_intel() && cpu_family() == 6 && supports_sse3() ) { |
574 if( is_intel() && cpu_family() == 6 && supports_sse3() ) { |
599 #ifndef PRODUCT |
601 #ifndef PRODUCT |
600 if (PrintMiscellaneous && Verbose) { |
602 if (PrintMiscellaneous && Verbose) { |
601 tty->print_cr("Logical CPUs per core: %u", |
603 tty->print_cr("Logical CPUs per core: %u", |
602 logical_processors_per_package()); |
604 logical_processors_per_package()); |
603 tty->print_cr("UseSSE=%d",UseSSE); |
605 tty->print_cr("UseSSE=%d",UseSSE); |
604 tty->print("Allocation: "); |
606 tty->print("Allocation"); |
605 if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow_prefetch()) { |
607 if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow_prefetch()) { |
606 tty->print_cr("no prefetching"); |
608 tty->print_cr(": no prefetching"); |
607 } else { |
609 } else { |
|
610 tty->print(" prefetching: "); |
608 if (UseSSE == 0 && supports_3dnow_prefetch()) { |
611 if (UseSSE == 0 && supports_3dnow_prefetch()) { |
609 tty->print("PREFETCHW"); |
612 tty->print("PREFETCHW"); |
610 } else if (UseSSE >= 1) { |
613 } else if (UseSSE >= 1) { |
611 if (AllocatePrefetchInstr == 0) { |
614 if (AllocatePrefetchInstr == 0) { |
612 tty->print("PREFETCHNTA"); |
615 tty->print("PREFETCHNTA"); |
617 } else if (AllocatePrefetchInstr == 3) { |
620 } else if (AllocatePrefetchInstr == 3) { |
618 tty->print("PREFETCHW"); |
621 tty->print("PREFETCHW"); |
619 } |
622 } |
620 } |
623 } |
621 if (AllocatePrefetchLines > 1) { |
624 if (AllocatePrefetchLines > 1) { |
622 tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize); |
625 tty->print_cr(" at distance %d, %d lines of %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize); |
623 } else { |
626 } else { |
624 tty->print_cr(" %d, one line", AllocatePrefetchDistance); |
627 tty->print_cr(" at distance %d, one line of %d bytes", AllocatePrefetchDistance, AllocatePrefetchStepSize); |
625 } |
628 } |
626 } |
629 } |
627 |
630 |
628 if (PrefetchCopyIntervalInBytes > 0) { |
631 if (PrefetchCopyIntervalInBytes > 0) { |
629 tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes); |
632 tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes); |