8244376: possibly stale comment above "struct SharedGlobals" in synchronizer.cpp
Reviewed-by: hseigel, dholmes
This commit is contained in:
parent
c85c9ad1f1
commit
1d7ed03d5c
@ -720,24 +720,6 @@ void ObjectSynchronizer::notifyall(Handle obj, TRAPS) {
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Hash Code handling
|
||||
//
|
||||
// Performance concern:
|
||||
// OrderAccess::storestore() calls release() which at one time stored 0
|
||||
// into the global volatile OrderAccess::dummy variable. This store was
|
||||
// unnecessary for correctness. Many threads storing into a common location
|
||||
// causes considerable cache migration or "sloshing" on large SMP systems.
|
||||
// As such, I avoided using OrderAccess::storestore(). In some cases
|
||||
// OrderAccess::fence() -- which incurs local latency on the executing
|
||||
// processor -- is a better choice as it scales on SMP systems.
|
||||
//
|
||||
// See http://blogs.oracle.com/dave/entry/biased_locking_in_hotspot for
|
||||
// a discussion of coherency costs. Note that all our current reference
|
||||
// platforms provide strong ST-ST order, so the issue is moot on IA32,
|
||||
// x64, and SPARC.
|
||||
//
|
||||
// As a general policy we use "volatile" to control compiler-based reordering
|
||||
// and explicit fences (barriers) to control for architectural reordering
|
||||
// performed by the CPU(s) or platform.
|
||||
|
||||
struct SharedGlobals {
|
||||
char _pad_prefix[OM_CACHE_LINE_SIZE];
|
||||
|
Loading…
x
Reference in New Issue
Block a user