RFR (XL): 8151386: Extract card live data out of G1ConcurrentMark
Thomas Schatzl
thomas.schatzl at oracle.com
Tue Apr 5 09:21:55 UTC 2016
Hi Kim,
On Mon, 2016-04-04 at 19:38 -0400, Kim Barrett wrote:
> > On Mar 29, 2016, at 9:38 AM, Thomas Schatzl wrote:
> > http://cr.openjdk.java.net/~tschatzl/8151386/webrev.3/ (full)
> > http://cropenjdk.java.net/~tschatzl/8151386/webrev.2_to_3 (diff)
>
> Looks good.
> Just a few minor comments and a couple of questions. If doing >
anything about any of these ends up having fannout, feel free to
> defer to another RFR. (I'm thinking of things like removing an
> unused parameter, which might percolate backward for some
> distance.) I don't think I need a new webrev for any of these.
Thanks for your review. Since all of your comments did not amount to
many changes in total, I fixed them all as requested.
I put an updated (final) webrev at
http://cr.openjdk.java.net/~tschatzl/8151386/webrev.4/ (full)
Passed jprt.
(Sorry, no diffs. I messed up, had already folded my stack of changes
down to the final change before I noticed that I hadn't incorporated
your last comment about verify_card_live_data_is_clear() yet).
I will finally push these two changes (i.e. +8077144, I wanted to wait)
tomorrow if there are no further comments or other obstructions.
Thanks,
Thomas
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.cpp
> 929 void G1ConcurrentMark::scanRootRegion(HeapRegion* hr, uint
> worker_id) {
>
> With the change to G1RootRegionScanClosure, it looks like the
> worker_id argument for scanRootRegion is no longer used.
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.cpp
> 2039 GCTraceTime(Debug, gc)("Clear Bitmap");
>
> Could the description string be more descriptive, e.g. which bitmap?
>
> Similarly here:
> src/share/vm/gc/g1/g1CollectedHeap.cpp
> 1427 GCTraceTime(Debug, gc)("Clear Bitmap for Verification");
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.hpp
> 651 // Verify live data.
> 652 void verify_live_data();
>
> That description comment is even more vacuous than the one it
> replaced.
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.hpp
> 855 // Precondition: obj is below region's NTAMS.
>
> Why was this comment removed?
>
> Oh, right, removal of the region argument left "region's" in the
> comment dangling, which I noted in review of the earlier change that
> removed that argument. But removing the comment was not what I
> suggested. I think the comment should be retained but changed to
>
> // Precondition: obj is below its region's NTAMS.
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp
> 32 #include "logging/log.hpp"
>
> Why is this being included here? I'm not finding any uses of logging
> in this file.
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp
> 263 inline bool G1ConcurrentMark::do_yield_check(uint worker_id) {
>
> The worker_id is unused. I think with these changes there are now no
> callers that provide a value for that argument, with all call sites
> now using the default value of 0.
>
> ---------------------------------------------------------------------
> ---------
> src/share/vm/gc/g1/g1RemSet.cpp
> 605 #ifndef PRODUCT
> 606 void G1RemSet::verify_card_live_data_is_clear() {
>
> I *think* the call chain that reaches here is DEBUG-only, which is
> good since extra verification is for DEBUG builds, not optimize or
> product builds. So I think that should be #ifdef ASSERT, and
> similarly update the declaration in the header, and similarly
> G1CardLiveData::verify_is_clear.
>
> ---------------------------------------------------------------------
> ---------
>
More information about the hotspot-gc-dev
mailing list