RFR(XXS): 8229437: assert(is_aligned(ref, HeapWordSize)) failed: invariant
Erik Gahlin
erik.gahlin at oracle.com
Fri Aug 23 15:19:18 UTC 2019
Looks good.
Erik
> Greetings,
>
> Please review this small change set.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-822943
> Webrev: http://cr.openjdk.java.net/~mgronlun/8229437/webrev01/
>
> Summary:
> Refactoring as part of https://bugs.openjdk.java.net/browse/JDK-8214542 copied the alignment assertion to the target delegates do_root() member function. But this is too strong since encoded narrowOop* references also forwards into the same do_root() member function.
>
> The alignment assertions are (still) done inside the RootSetClosure before references are forwarded to delegates. Therefore we are not weakening validity checks by this change set.
>
> Thanks
> Markus
>
> diff -r 807d192fb7dd -r 97a842e42b38 src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp
> --- a/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp Wed Aug 14 00:18:00 2019 -0400
> +++ b/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp Wed Aug 14 11:20:25 2019 +0200
> @@ -230,8 +230,6 @@
>
> void BFSClosure::do_root(const oop* ref) {
> assert(ref != NULL, "invariant");
> - assert(is_aligned(ref, HeapWordSize), "invariant");
> - assert(*ref != NULL, "invariant");
> if (!_edge_queue->is_full()) {
> _edge_queue->add(NULL, ref);
> }
> diff -r 807d192fb7dd -r 97a842e42b38 src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp
> --- a/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp Wed Aug 14 00:18:00 2019 -0400
> +++ b/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp Wed Aug 14 11:20:25 2019 +0200
> @@ -178,8 +178,7 @@
>
> void DFSClosure::do_root(const oop* ref) {
> assert(ref != NULL, "invariant");
> - assert(is_aligned(ref, HeapWordSize), "invariant");
> - const oop pointee = *ref;
> + const oop pointee = UnifiedOop::dereference(ref);
> assert(pointee != NULL, "invariant");
> closure_impl(ref, pointee);
> }
More information about the hotspot-jfr-dev
mailing list