--- old/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp 2020-01-24 15:17:53.005262005 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp 2020-01-24 15:17:52.785258312 +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(obj) ? "" : "not"); + msg.append(" %3s allocated after mark start\n", ctx->allocated_after_mark_start((HeapWord *) 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(cast_from_oop(obj)) ? "" : "not"); + msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in((HeapWord*) 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:17:53.421268989 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp 2020-01-24 15:17:53.169264759 +0100 @@ -168,7 +168,7 @@ ShenandoahHeapRegion* r = _heap->heap_region_containing(obj); assert(r->is_cset(), "sanity"); - HeapWord* cur = cast_from_oop(obj) + obj->size(); + HeapWord* cur = (HeapWord*)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:17:53.809275504 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp 2020-01-24 15:17:53.565271408 +0100 @@ -42,7 +42,7 @@ } inline oop ShenandoahBarrierSet::resolve_forwarded(oop p) { - if (p != NULL) { + if (((HeapWord*) 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(cast_from_oop(obj))) { + if (HAS_FWD && cset->is_in((HeapWord *) 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:17:54.217282354 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetClone.inline.hpp 2020-01-24 15:17:53.965278123 +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(obj)) { + if (_cset->is_in((HeapWord *)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:17:54.617289069 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahClosures.inline.hpp 2020-01-24 15:17:54.365284838 +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(cast_from_oop(obj))) { + if (_heap->in_collection_set(obj) || _traversal_set->is_in((HeapWord*)obj)) { obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj); RawAccess::oop_store(p, obj); } else { --- old/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp 2020-01-24 15:17:55.025295920 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp 2020-01-24 15:17:54.797292091 +0100 @@ -80,7 +80,7 @@ inline bool is_in(ShenandoahHeapRegion* r) const; inline bool is_in(size_t region_number) const; - inline bool is_in(oop obj) const; + inline bool is_in(HeapWord* p) const; void print_on(outputStream* out) const; --- old/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.inline.hpp 2020-01-24 15:17:55.445302971 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.inline.hpp 2020-01-24 15:17:55.201298874 +0100 @@ -39,9 +39,9 @@ return is_in(r->region_number()); } -bool ShenandoahCollectionSet::is_in(oop p) const { +bool ShenandoahCollectionSet::is_in(HeapWord* p) const { assert(_heap->is_in(p), "Must be in the heap"); - uintx index = (cast_from_oop(p)) >> _region_size_bytes_shift; + uintx index = ((uintx) p) >> _region_size_bytes_shift; // no need to subtract the bottom of the heap from p, // _biased_cset_map is biased return _biased_cset_map[index] == 1; --- old/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp 2020-01-24 15:17:55.869310089 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp 2020-01-24 15:17:55.605305657 +0100 @@ -39,7 +39,7 @@ if (mark.is_marked()) { return (HeapWord*) mark.clear_lock_bits().to_pointer(); } else { - return cast_from_oop(obj); + return (HeapWord*) obj; } } --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2020-01-24 15:17:56.217315932 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2020-01-24 15:17:56.009312440 +0100 @@ -1252,8 +1252,8 @@ obj = fwd; } assert(oopDesc::is_oop(obj), "must be a valid oop"); - if (!_bitmap->is_marked(obj)) { - _bitmap->mark(obj); + if (!_bitmap->is_marked((HeapWord*) obj)) { + _bitmap->mark((HeapWord*) obj); _oop_stack->push(obj); } } --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2020-01-24 15:17:56.649323185 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2020-01-24 15:17:56.441319693 +0100 @@ -283,7 +283,7 @@ } // Copy the object: - Copy::aligned_disjoint_words(cast_from_oop(p), copy, size); + Copy::aligned_disjoint_words((HeapWord*) 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 = cast_from_oop(p); + HeapWord* obj = (HeapWord*) p; assert(collection_set() != NULL, "Sanity"); assert(is_in(obj), "should be in heap"); --- old/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.hpp 2020-01-24 15:17:57.049329901 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.hpp 2020-01-24 15:17:56.825326140 +0100 @@ -84,7 +84,7 @@ inline bool is_in(ShenandoahHeapRegion* r) const; inline bool is_in(size_t region_number) const; - inline bool is_in(oop p) const; + inline bool is_in(HeapWord* p) const; void print_on(outputStream* out) const; --- old/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.inline.hpp 2020-01-24 15:17:57.481337154 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.inline.hpp 2020-01-24 15:17:57.213332654 +0100 @@ -39,9 +39,9 @@ return is_in(r->region_number()); } -bool ShenandoahHeapRegionSet::is_in(oop p) const { +bool ShenandoahHeapRegionSet::is_in(HeapWord* p) const { assert(_heap->is_in(p), "Must be in the heap"); - uintx index = (cast_from_oop(p)) >> _region_size_bytes_shift; + uintx index = ((uintx) p) >> _region_size_bytes_shift; // no need to subtract the bottom of the heap from p, // _biased_set_map is biased return _biased_set_map[index] == 1; --- old/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.cpp 2020-01-24 15:17:57.881343870 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.cpp 2020-01-24 15:17:57.641339841 +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(p), "must be truly marked"); + assert(!_heap->complete_marking_context()->allocated_after_mark_start((HeapWord*) 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 = cast_from_oop(p); - HeapWord* compact_to = cast_from_oop(p->forwardee()); + HeapWord* compact_from = (HeapWord*) p; + HeapWord* compact_to = (HeapWord*) 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.hpp 2020-01-24 15:17:58.297350854 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.hpp 2020-01-24 15:17:58.053346757 +0100 @@ -55,7 +55,7 @@ inline bool is_marked(oop obj) const; - inline bool allocated_after_mark_start(oop obj) const; + inline bool allocated_after_mark_start(HeapWord* addr) const; inline MarkBitMap* mark_bit_map(); --- old/src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.inline.hpp 2020-01-24 15:17:58.701357637 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.inline.hpp 2020-01-24 15:17:58.461353607 +0100 @@ -33,15 +33,16 @@ inline bool ShenandoahMarkingContext::mark(oop obj) { shenandoah_assert_not_forwarded(NULL, obj); - return (! allocated_after_mark_start(obj)) && _mark_bit_map.par_mark(obj); + HeapWord* addr = (HeapWord*) obj; + return (! allocated_after_mark_start(addr)) && _mark_bit_map.par_mark(addr); } inline bool ShenandoahMarkingContext::is_marked(oop obj) const { - return allocated_after_mark_start(obj) || _mark_bit_map.is_marked(obj); + HeapWord* addr = (HeapWord*) obj; + return allocated_after_mark_start(addr) || _mark_bit_map.is_marked(addr); } -inline bool ShenandoahMarkingContext::allocated_after_mark_start(oop obj) const { - HeapWord* addr = cast_from_oop(obj); +inline bool ShenandoahMarkingContext::allocated_after_mark_start(HeapWord* addr) const { uintx index = ((uintx) addr) >> ShenandoahHeapRegion::region_size_bytes_shift(); HeapWord* top_at_mark_start = _top_at_mark_starts[index]; bool alloc_after_mark_start = addr >= top_at_mark_start; --- old/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2020-01-24 15:17:59.105364420 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2020-01-24 15:17:58.861360323 +0100 @@ -88,7 +88,8 @@ // For performance reasons, only fully verify non-marked field values. // We are here when the host object for *p is already marked. - if (_map->par_mark(obj)) { + HeapWord* addr = (HeapWord*) obj; + if (_map->par_mark(addr)) { verify_oop_at(p, obj); _stack->push(ShenandoahVerifierTask(obj)); } @@ -116,7 +117,7 @@ check(ShenandoahAsserts::_safe_unknown, obj, Metaspace::contains(obj_klass), "Object klass pointer must go to metaspace"); - HeapWord *obj_addr = cast_from_oop(obj); + HeapWord *obj_addr = (HeapWord *) obj; check(ShenandoahAsserts::_safe_unknown, obj, obj_addr < obj_reg->top(), "Object start should be within the region"); @@ -180,7 +181,7 @@ check(ShenandoahAsserts::_safe_oop, obj, !fwd_reg->is_humongous(), "Should have no humongous forwardees"); - HeapWord *fwd_addr = cast_from_oop(fwd); + HeapWord *fwd_addr = (HeapWord *) 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(),