< prev index next >
src/hotspot/share/runtime/synchronizer.cpp
Print this page
@@ -882,11 +882,11 @@
}
// Visitors ...
void ObjectSynchronizer::monitors_iterate(MonitorClosure* closure) {
- PaddedObjectMonitor* block = OrderAccess::load_acquire(&g_block_list);
+ PaddedObjectMonitor* block = Atomic::load_acquire(&g_block_list);
while (block != NULL) {
assert(block->object() == CHAINMARKER, "must be a block header");
for (int i = _BLOCKSIZE - 1; i > 0; i--) {
ObjectMonitor* mid = (ObjectMonitor *)(block + i);
oop object = (oop)mid->object();
@@ -1111,11 +1111,11 @@
// The very first ObjectMonitor in a block is reserved and dedicated.
// It serves as blocklist "next" linkage.
temp[0]._next_om = g_block_list;
// There are lock-free uses of g_block_list so make sure that
// the previous stores happen before we update g_block_list.
- OrderAccess::release_store(&g_block_list, temp);
+ Atomic::release_store(&g_block_list, temp);
// Add the new string of ObjectMonitors to the global free list
temp[_BLOCKSIZE - 1]._next_om = g_free_list;
g_free_list = temp + 1;
Thread::muxRelease(&gListLock);
@@ -2162,11 +2162,11 @@
// Check if monitor belongs to the monitor cache
// The list is grow-only so it's *relatively* safe to traverse
// the list of extant blocks without taking a lock.
int ObjectSynchronizer::verify_objmon_isinpool(ObjectMonitor *monitor) {
- PaddedObjectMonitor* block = OrderAccess::load_acquire(&g_block_list);
+ PaddedObjectMonitor* block = Atomic::load_acquire(&g_block_list);
while (block != NULL) {
assert(block->object() == CHAINMARKER, "must be a block header");
if (monitor > &block[0] && monitor < &block[_BLOCKSIZE]) {
address mon = (address)monitor;
address blk = (address)block;
< prev index next >