6821700: tune VM flags for peak performance
Summary: Tune C2 flags default values for performance.
Reviewed-by: never, phh, iveresov, jmasa, ysr
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Mon Mar 30 18:19:31 2009 -0700
@@ -46,6 +46,7 @@
define_pd_global(uintx, NewSize, ScaleForWordSize((2048 * K) + (2 * (64 * K))));
define_pd_global(intx, SurvivorRatio, 8);
define_pd_global(intx, InlineFrequencyCount, 50); // we can use more inlining on the SPARC
+define_pd_global(intx, InlineSmallCode, 1500);
#ifdef _LP64
// Stack slots are 2X larger in LP64 than in the 32 bit VM.
define_pd_global(intx, ThreadStackSize, 1024);
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Mon Mar 30 18:19:31 2009 -0700
@@ -62,7 +62,7 @@
if (is_niagara1()) {
// Indirect branch is the same cost as direct
if (FLAG_IS_DEFAULT(UseInlineCaches)) {
- UseInlineCaches = false;
+ FLAG_SET_DEFAULT(UseInlineCaches, false);
}
#ifdef _LP64
// Single issue niagara1 is slower for CompressedOops
@@ -79,15 +79,19 @@
#ifdef COMPILER2
// Indirect branch is the same cost as direct
if (FLAG_IS_DEFAULT(UseJumpTables)) {
- UseJumpTables = true;
+ FLAG_SET_DEFAULT(UseJumpTables, true);
}
// Single-issue, so entry and loop tops are
// aligned on a single instruction boundary
if (FLAG_IS_DEFAULT(InteriorEntryAlignment)) {
- InteriorEntryAlignment = 4;
+ FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
}
if (FLAG_IS_DEFAULT(OptoLoopAlignment)) {
- OptoLoopAlignment = 4;
+ FLAG_SET_DEFAULT(OptoLoopAlignment, 4);
+ }
+ if (is_niagara1_plus() && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+ // Use smaller prefetch distance on N2
+ FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
}
#endif
}
@@ -95,7 +99,7 @@
// Use hardware population count instruction if available.
if (has_hardware_popc()) {
if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
- UsePopCountInstruction = true;
+ FLAG_SET_DEFAULT(UsePopCountInstruction, true);
}
}
--- a/hotspot/src/cpu/x86/vm/globals_x86.hpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/cpu/x86/vm/globals_x86.hpp Mon Mar 30 18:19:31 2009 -0700
@@ -60,6 +60,7 @@
define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+1));
#endif // AMD64
define_pd_global(intx, InlineFrequencyCount, 100);
+define_pd_global(intx, InlineSmallCode, 1000);
define_pd_global(intx, PreInflateSpin, 10);
define_pd_global(intx, StackYellowPages, 2);
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Mar 30 18:19:31 2009 -0700
@@ -50,6 +50,7 @@
template(java_lang_Class, "java/lang/Class") \
template(java_lang_String, "java/lang/String") \
template(java_lang_StringValue, "java/lang/StringValue") \
+ template(java_lang_StringCache, "java/lang/StringValue$StringCache") \
template(java_lang_Thread, "java/lang/Thread") \
template(java_lang_ThreadGroup, "java/lang/ThreadGroup") \
template(java_lang_Cloneable, "java/lang/Cloneable") \
@@ -286,6 +287,7 @@
template(frontCacheEnabled_name, "frontCacheEnabled") \
template(stringCacheEnabled_name, "stringCacheEnabled") \
template(bitCount_name, "bitCount") \
+ template(profile_name, "profile") \
\
/* non-intrinsic name/signature pairs: */ \
template(register_method_name, "register") \
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp Mon Mar 30 18:19:31 2009 -0700
@@ -232,6 +232,14 @@
return "disallowed by CompilerOracle";
}
+ if (UseStringCache) {
+ // Do not inline StringCache::profile() method used only at the beginning.
+ if (callee_method->name() == ciSymbol::profile_name() &&
+ callee_method->holder()->name() == ciSymbol::java_lang_StringCache()) {
+ return "profiling method";
+ }
+ }
+
return NULL;
}
--- a/hotspot/src/share/vm/runtime/globals.hpp Fri Mar 27 14:37:42 2009 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp Mon Mar 30 18:19:31 2009 -0700
@@ -47,6 +47,7 @@
define_pd_global(intx, OnStackReplacePercentage, 0);
define_pd_global(bool, ResizeTLAB, false);
define_pd_global(intx, FreqInlineSize, 0);
+define_pd_global(intx, InlineSmallCode, 0);
define_pd_global(intx, NewSizeThreadIncrease, 4*K);
define_pd_global(intx, NewRatio, 4);
define_pd_global(intx, InlineClassNatives, true);
@@ -2616,7 +2617,7 @@
develop(intx, MaxRecursiveInlineLevel, 1, \
"maximum number of nested recursive calls that are inlined") \
\
- product(intx, InlineSmallCode, 1000, \
+ product_pd(intx, InlineSmallCode, \
"Only inline already compiled methods if their code size is " \
"less than this") \
\