84 #define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread) \
85 { \
86 if (DTraceMonitorProbes) { \
87 DTRACE_MONITOR_PROBE_COMMON(obj, thread); \
88 HOTSPOT_MONITOR_##probe(jtid, \
89 (uintptr_t)(monitor), bytes, len); \
90 } \
91 }
92
93 #else // ndef DTRACE_ENABLED
94
95 #define DTRACE_MONITOR_WAIT_PROBE(obj, thread, millis, mon) {;}
96 #define DTRACE_MONITOR_PROBE(probe, obj, thread, mon) {;}
97
98 #endif // ndef DTRACE_ENABLED
99
100 // Tunables ...
101 // The knob* variables are effectively final. Once set they should
102 // never be modified hence. Consider using __read_mostly with GCC.
103
104 int ObjectMonitor::Knob_VerifyInUse = 0;
105 int ObjectMonitor::Knob_VerifyMatch = 0;
106 int ObjectMonitor::Knob_SpinLimit = 5000; // derived by an external tool -
107
108 static int Knob_SpinBase = 0; // Floor AKA SpinMin
109 static int Knob_CASPenalty = -1; // Penalty for failed CAS
110 static int Knob_OXPenalty = -1; // Penalty for observed _owner change
111 static int Knob_SpinSetSucc = 1; // spinners set the _succ field
112 static int Knob_SpinEarly = 1;
113 static int Knob_SuccEnabled = 1; // futile wake throttling
114 static int Knob_SuccRestrict = 0; // Limit successors + spinners to at-most-one
115 static int Knob_MaxSpinners = -1; // Should be a function of # CPUs
116 static int Knob_Bonus = 100; // spin success bonus
117 static int Knob_BonusB = 100; // spin success bonus
118 static int Knob_Penalty = 200; // spin failure penalty
119 static int Knob_Poverty = 1000;
120 static int Knob_SpinAfterFutile = 1; // Spin after returning from park()
121 static int Knob_FixedSpin = 0;
122 static int Knob_OState = 3; // Spinner checks thread state of _owner
123 static int Knob_UsePause = 1;
124 static int Knob_ExitPolicy = 0;
|
84 #define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread) \
85 { \
86 if (DTraceMonitorProbes) { \
87 DTRACE_MONITOR_PROBE_COMMON(obj, thread); \
88 HOTSPOT_MONITOR_##probe(jtid, \
89 (uintptr_t)(monitor), bytes, len); \
90 } \
91 }
92
93 #else // ndef DTRACE_ENABLED
94
95 #define DTRACE_MONITOR_WAIT_PROBE(obj, thread, millis, mon) {;}
96 #define DTRACE_MONITOR_PROBE(probe, obj, thread, mon) {;}
97
98 #endif // ndef DTRACE_ENABLED
99
100 // Tunables ...
101 // The knob* variables are effectively final. Once set they should
102 // never be modified hence. Consider using __read_mostly with GCC.
103
104 int ObjectMonitor::Knob_VerifyMatch = 0;
105 int ObjectMonitor::Knob_SpinLimit = 5000; // derived by an external tool -
106
107 static int Knob_SpinBase = 0; // Floor AKA SpinMin
108 static int Knob_CASPenalty = -1; // Penalty for failed CAS
109 static int Knob_OXPenalty = -1; // Penalty for observed _owner change
110 static int Knob_SpinSetSucc = 1; // spinners set the _succ field
111 static int Knob_SpinEarly = 1;
112 static int Knob_SuccEnabled = 1; // futile wake throttling
113 static int Knob_SuccRestrict = 0; // Limit successors + spinners to at-most-one
114 static int Knob_MaxSpinners = -1; // Should be a function of # CPUs
115 static int Knob_Bonus = 100; // spin success bonus
116 static int Knob_BonusB = 100; // spin success bonus
117 static int Knob_Penalty = 200; // spin failure penalty
118 static int Knob_Poverty = 1000;
119 static int Knob_SpinAfterFutile = 1; // Spin after returning from park()
120 static int Knob_FixedSpin = 0;
121 static int Knob_OState = 3; // Spinner checks thread state of _owner
122 static int Knob_UsePause = 1;
123 static int Knob_ExitPolicy = 0;
|