< prev index next >

src/hotspot/share/runtime/synchronizer.cpp

Print this page

        

*** 237,247 **** // 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) { assert(m->_recursions == 0, "invariant"); assert(m->_owner == Self, "invariant"); return true; } } --- 237,247 ---- // 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(Self, &(m->_owner), (void*)NULL) == NULL) { assert(m->_recursions == 0, "invariant"); assert(m->_owner == Self, "invariant"); return true; } }
*** 950,962 **** block = (PaddedEnd<ObjectMonitor> *)block->FreeNext; } } // Get the next block in the block list. ! static inline ObjectMonitor* next(ObjectMonitor* block) { assert(block->object() == CHAINMARKER, "must be a block header"); ! block = block->FreeNext; assert(block == NULL || block->object() == CHAINMARKER, "must be a block header"); return block; } static bool monitors_used_above_threshold() { --- 950,962 ---- block = (PaddedEnd<ObjectMonitor> *)block->FreeNext; } } // Get the next block in the block list. ! static inline PaddedEnd<ObjectMonitor>* next(PaddedEnd<ObjectMonitor>* block) { assert(block->object() == CHAINMARKER, "must be a block header"); ! 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,997 **** } 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)) { 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()); --- 987,997 ---- } 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 = 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,1739 **** counters->nInuse += gOmInUseCount; } } else { PaddedEnd<ObjectMonitor> * block = OrderAccess::load_acquire(&gBlockList); ! for (; block != NULL; block = (PaddedEnd<ObjectMonitor> *)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]; --- 1729,1739 ---- counters->nInuse += gOmInUseCount; } } else { PaddedEnd<ObjectMonitor> * block = OrderAccess::load_acquire(&gBlockList); ! 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,1976 **** 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]) { address mon = (address)monitor; address blk = (address)block; size_t diff = mon - blk; assert((diff % sizeof(PaddedEnd<ObjectMonitor>)) == 0, "must be aligned"); return 1; --- 1965,1975 ---- 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 > &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 >