--- old/src/hotspot/share/runtime/synchronizer.cpp 2017-10-13 11:47:04.509830716 -0400 +++ new/src/hotspot/share/runtime/synchronizer.cpp 2017-10-13 11:47:04.054371129 -0400 @@ -239,7 +239,7 @@ 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; @@ -952,9 +952,9 @@ } // Get the next block in the block list. -static inline ObjectMonitor* next(ObjectMonitor* block) { +static inline PaddedEnd* next(PaddedEnd* block) { assert(block->object() == CHAINMARKER, "must be a block header"); - block = block->FreeNext; + block = (PaddedEnd*) block->FreeNext; assert(block == NULL || block->object() == CHAINMARKER, "must be a block header"); return block; } @@ -989,7 +989,7 @@ void ObjectSynchronizer::global_oops_do(OopClosure* f) { assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); PaddedEnd * block = OrderAccess::load_acquire(&gBlockList); - for (; block != NULL; block = (PaddedEnd *)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]; @@ -1731,7 +1731,7 @@ } else { PaddedEnd * block = OrderAccess::load_acquire(&gBlockList); - for (; block != NULL; block = (PaddedEnd *)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; @@ -1967,8 +1967,7 @@ PaddedEnd * 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;