< prev index next >
src/hotspot/share/runtime/synchronizer.cpp
Print this page
@@ -237,11 +237,11 @@
// recursive stack-locking in the displaced header in the BasicLock,
// and last are the inflated Java Monitor (ObjectMonitor) checks.
lock->set_displaced_header(markOopDesc::unused_mark());
if (owner == NULL &&
- Atomic::cmpxchg((void*)Self, &(m->_owner), (void*)NULL) == NULL) {
+ Atomic::cmpxchg(Self, &(m->_owner), (void*)NULL) == NULL) {
assert(m->_recursions == 0, "invariant");
assert(m->_owner == Self, "invariant");
return true;
}
}
@@ -950,13 +950,13 @@
block = (PaddedEnd<ObjectMonitor> *)block->FreeNext;
}
}
// Get the next block in the block list.
-static inline ObjectMonitor* next(ObjectMonitor* block) {
+static inline PaddedEnd<ObjectMonitor>* next(PaddedEnd<ObjectMonitor>* block) {
assert(block->object() == CHAINMARKER, "must be a block header");
- block = block->FreeNext;
+ block = (PaddedEnd<ObjectMonitor>*) block->FreeNext;
assert(block == NULL || block->object() == CHAINMARKER, "must be a block header");
return block;
}
static bool monitors_used_above_threshold() {
@@ -987,11 +987,11 @@
}
void ObjectSynchronizer::global_oops_do(OopClosure* f) {
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
PaddedEnd<ObjectMonitor> * block = OrderAccess::load_acquire(&gBlockList);
- for (; block != NULL; block = (PaddedEnd<ObjectMonitor> *)next(block)) {
+ for (; block != NULL; block = next(block)) {
assert(block->object() == CHAINMARKER, "must be a block header");
for (int i = 1; i < _BLOCKSIZE; i++) {
ObjectMonitor* mid = (ObjectMonitor *)&block[i];
if (mid->object() != NULL) {
f->do_oop((oop*)mid->object_addr());
@@ -1729,11 +1729,11 @@
counters->nInuse += gOmInUseCount;
}
} else {
PaddedEnd<ObjectMonitor> * block = OrderAccess::load_acquire(&gBlockList);
- for (; block != NULL; block = (PaddedEnd<ObjectMonitor> *)next(block)) {
+ for (; block != NULL; block = next(block)) {
// Iterate over all extant monitors - Scavenge all idle monitors.
assert(block->object() == CHAINMARKER, "must be a block header");
counters->nInCirculation += _BLOCKSIZE;
for (int i = 1; i < _BLOCKSIZE; i++) {
ObjectMonitor* mid = (ObjectMonitor*)&block[i];
@@ -1965,12 +1965,11 @@
int ObjectSynchronizer::verify_objmon_isinpool(ObjectMonitor *monitor) {
PaddedEnd<ObjectMonitor> * block = OrderAccess::load_acquire(&gBlockList);
while (block != NULL) {
assert(block->object() == CHAINMARKER, "must be a block header");
- if (monitor > (ObjectMonitor *)&block[0] &&
- monitor < (ObjectMonitor *)&block[_BLOCKSIZE]) {
+ if (monitor > &block[0] && monitor < &block[_BLOCKSIZE]) {
address mon = (address)monitor;
address blk = (address)block;
size_t diff = mon - blk;
assert((diff % sizeof(PaddedEnd<ObjectMonitor>)) == 0, "must be aligned");
return 1;
< prev index next >