--- old/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp 2020-01-24 15:19:22.886771429 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp 2020-01-24 15:19:22.614766860 +0100 @@ -67,11 +67,11 @@ ShenandoahMarkingContext* const ctx = heap->marking_context(); msg.append(" " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name()); - msg.append(" %3s allocated after mark start\n", ctx->allocated_after_mark_start((HeapWord *) obj) ? "" : "not"); + msg.append(" %3s allocated after mark start\n", ctx->allocated_after_mark_start(cast_from_oop(obj)) ? "" : "not"); msg.append(" %3s marked \n", ctx->is_marked(obj) ? "" : "not"); msg.append(" %3s in collection set\n", heap->in_collection_set(obj) ? "" : "not"); if (heap->traversal_gc() != NULL) { - msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in((HeapWord*) obj) ? "" : "not"); + msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in(cast_from_oop(obj)) ? "" : "not"); } msg.append(" mark:%s\n", mw_ss.as_string()); msg.append(" region: %s", ss.as_string()); --- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp 2020-01-24 15:19:23.274777947 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp 2020-01-24 15:19:23.042774050 +0100 @@ -168,7 +168,7 @@ ShenandoahHeapRegion* r = _heap->heap_region_containing(obj); assert(r->is_cset(), "sanity"); - HeapWord* cur = (HeapWord*)obj + obj->size(); + HeapWord* cur = cast_from_oop(obj) + obj->size(); size_t count = 0; while ((cur < r->top()) && ctx->is_marked(oop(cur)) && (count++ < max)) { --- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp 2020-01-24 15:19:23.690784936 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp 2020-01-24 15:19:23.442780769 +0100 @@ -42,7 +42,7 @@ } inline oop ShenandoahBarrierSet::resolve_forwarded(oop p) { - if (((HeapWord*) p) != NULL) { + if (cast_from_oop(p) != NULL) { return resolve_forwarded_not_null(p); } else { return p; @@ -268,7 +268,7 @@ T o = RawAccess<>::oop_load(elem_ptr); if (!CompressedOops::is_null(o)) { oop obj = CompressedOops::decode_not_null(o); - if (HAS_FWD && cset->is_in((HeapWord *) obj)) { + if (HAS_FWD && cset->is_in(cast_from_oop(obj))) { assert(_heap->has_forwarded_objects(), "only get here with forwarded objects"); oop fwd = resolve_forwarded_not_null(obj); if (EVAC && obj == fwd) { --- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetClone.inline.hpp 2020-01-24 15:19:24.090791655 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetClone.inline.hpp 2020-01-24 15:19:23.862787825 +0100 @@ -46,7 +46,7 @@ T o = RawAccess<>::oop_load(p); if (!CompressedOops::is_null(o)) { oop obj = CompressedOops::decode_not_null(o); - if (_cset->is_in((HeapWord *)obj)) { + if (_cset->is_in(cast_from_oop(obj))) { oop fwd = _bs->resolve_forwarded_not_null(obj); if (EVAC && obj == fwd) { fwd = _heap->evacuate_object(obj, _thread); --- old/src/hotspot/share/gc/shenandoah/shenandoahClosures.inline.hpp 2020-01-24 15:19:24.638800861 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahClosures.inline.hpp 2020-01-24 15:19:24.274794746 +0100 @@ -94,7 +94,7 @@ T o = RawAccess<>::oop_load(p); if (!CompressedOops::is_null(o)) { oop obj = CompressedOops::decode_not_null(o); - if (_heap->in_collection_set(obj) || _traversal_set->is_in((HeapWord*)obj)) { + if (_heap->in_collection_set(obj) || _traversal_set->is_in(cast_from_oop(obj))) { obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj); RawAccess::oop_store(p, obj); } else { --- old/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp 2020-01-24 15:19:25.010807110 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp 2020-01-24 15:19:24.798803548 +0100 @@ -39,7 +39,7 @@ if (mark.is_marked()) { return (HeapWord*) mark.clear_lock_bits().to_pointer(); } else { - return (HeapWord*) obj; + return cast_from_oop(obj); } } --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2020-01-24 15:19:25.418813964 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2020-01-24 15:19:25.166809730 +0100 @@ -1252,8 +1252,8 @@ obj = fwd; } assert(oopDesc::is_oop(obj), "must be a valid oop"); - if (!_bitmap->is_marked((HeapWord*) obj)) { - _bitmap->mark((HeapWord*) obj); + if (!_bitmap->is_marked(obj)) { + _bitmap->mark(obj); _oop_stack->push(obj); } } --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2020-01-24 15:19:25.922822430 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2020-01-24 15:19:25.638817659 +0100 @@ -283,7 +283,7 @@ } // Copy the object: - Copy::aligned_disjoint_words((HeapWord*) p, copy, size); + Copy::aligned_disjoint_words(cast_from_oop(p), copy, size); // Try to install the new forwarding pointer. oop copy_val = oop(copy); @@ -326,7 +326,7 @@ template inline bool ShenandoahHeap::in_collection_set(T p) const { - HeapWord* obj = (HeapWord*) p; + HeapWord* obj = cast_from_oop(p); assert(collection_set() != NULL, "Sanity"); assert(is_in(obj), "should be in heap"); --- old/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.cpp 2020-01-24 15:19:26.354829688 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.cpp 2020-01-24 15:19:26.090825252 +0100 @@ -297,7 +297,7 @@ void do_object(oop p) { assert(_from_region != NULL, "must set before work"); assert(_heap->complete_marking_context()->is_marked(p), "must be marked"); - assert(!_heap->complete_marking_context()->allocated_after_mark_start((HeapWord*) p), "must be truly marked"); + assert(!_heap->complete_marking_context()->allocated_after_mark_start(cast_from_oop(p)), "must be truly marked"); size_t obj_size = p->size(); if (_compact_point + obj_size > _to_region->end()) { @@ -664,8 +664,8 @@ assert(_heap->complete_marking_context()->is_marked(p), "must be marked"); size_t size = (size_t)p->size(); if (p->is_forwarded()) { - HeapWord* compact_from = (HeapWord*) p; - HeapWord* compact_to = (HeapWord*) p->forwardee(); + HeapWord* compact_from = cast_from_oop(p); + HeapWord* compact_to = cast_from_oop(p->forwardee()); Copy::aligned_conjoint_words(compact_from, compact_to, size); oop new_obj = oop(compact_to); new_obj->init_mark_raw(); --- old/src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.inline.hpp 2020-01-24 15:19:26.802837213 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.inline.hpp 2020-01-24 15:19:26.550832980 +0100 @@ -33,12 +33,12 @@ inline bool ShenandoahMarkingContext::mark(oop obj) { shenandoah_assert_not_forwarded(NULL, obj); - HeapWord* addr = (HeapWord*) obj; + HeapWord* addr = cast_from_oop(obj); return (! allocated_after_mark_start(addr)) && _mark_bit_map.par_mark(addr); } inline bool ShenandoahMarkingContext::is_marked(oop obj) const { - HeapWord* addr = (HeapWord*) obj; + HeapWord* addr = cast_from_oop(obj); return allocated_after_mark_start(addr) || _mark_bit_map.is_marked(addr); } --- old/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2020-01-24 15:19:27.210844067 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2020-01-24 15:19:26.966839968 +0100 @@ -88,7 +88,7 @@ // For performance reasons, only fully verify non-marked field values. // We are here when the host object for *p is already marked. - HeapWord* addr = (HeapWord*) obj; + HeapWord* addr = cast_from_oop(obj); if (_map->par_mark(addr)) { verify_oop_at(p, obj); _stack->push(ShenandoahVerifierTask(obj)); @@ -117,7 +117,7 @@ check(ShenandoahAsserts::_safe_unknown, obj, Metaspace::contains(obj_klass), "Object klass pointer must go to metaspace"); - HeapWord *obj_addr = (HeapWord *) obj; + HeapWord *obj_addr = cast_from_oop(obj); check(ShenandoahAsserts::_safe_unknown, obj, obj_addr < obj_reg->top(), "Object start should be within the region"); @@ -181,7 +181,7 @@ check(ShenandoahAsserts::_safe_oop, obj, !fwd_reg->is_humongous(), "Should have no humongous forwardees"); - HeapWord *fwd_addr = (HeapWord *) fwd; + HeapWord *fwd_addr = cast_from_oop(fwd); check(ShenandoahAsserts::_safe_oop, obj, fwd_addr < fwd_reg->top(), "Forwardee start should be within the region"); check(ShenandoahAsserts::_safe_oop, obj, (fwd_addr + fwd->size()) <= fwd_reg->top(),