RFR (S): JDK-8076241: Remove unused methods mod_card_iterate() and non_clean_card_iterate_serial()

Kim Barrett kim.barrett at oracle.com
Tue Mar 31 23:59:49 UTC 2015

On Mar 31, 2015, at 2:59 AM, Bengt Rutisson <bengt.rutisson at oracle.com> wrote:
> On 2015-03-31 00:16, Kim Barrett wrote:
>> ------------------------------------------------------------------------------
>> src/share/vm/memory/cardTableModRefBS.hpp
>>  181   // XXX ??? MemRegionClosure above vs OopsInGenClosure below XXX
>>  182   // XXX some new_dcto_cl's take OopClosure's, plus as above there are
>>  183   // some MemRegionClosures. Clean this up everywhere. XXX
>> This untouched comment is referring to the removed
>> non_clean_card_iterate_serial function ("above"), so needs to be
>> updated. It may be that the comment can be removed entirely now,
>> possibly being moved to the technical debt wiki.
> Ah. Good point. I removed the comment and added this to the technical debt wiki:
> "CardTableModRefBS::dirty_card_iterate() works with a MemRegion and a MemRegionClosure. Other similar methods, such as CardTableModRefBS::non_clean_card_iterate_possibly_parallel() and CardTableModRefBS::process_stride() use OopsInGenClosure instead. Can we use a consistent API?”

That works for me.

>> ------------------------------------------------------------------------------
>> src/share/vm/memory/cardTableModRefBS.hpp
>>  382   // Invoke "cl.do_MemRegion" on a set of MemRegions that collectively
>>  383   // includes all the modified cards (expressing each card as a
>>  384   // MemRegion).  Thus, several modified cards may be lumped into one
>>  385   // region.  The regions are non-overlapping, and are visited in
>>  386   // *decreasing* address order.  (This order aids with imprecise card
>>  387   // marking, where a dirty card may cause scanning, and summarization
>>  388   // marking, of objects that extend onto subsequent cards.)
>> This comment was the reason I'd deferred removing mod_card_iterate. So
>> far as I can tell, this comment is the *only* place where there is any
>> discussion whatsoever of why some card iterators scan backward. I
>> wanted to find a new and better home for that information before
>> deleting the comment.
> I see. I couldn't find a card iterator that scans backwards now. Do you have a pointer to one that still scans backwards?
> I'll push the change with the comment removed. I'm happy to find a new place for the comment if we have an iterators that scan backwards.

I think the only one left is ClearNoncleanCardWrapper::do_MemRegion().  But I don’t guarantee there aren’t more.

I was trying to build a list of all the card table iterators as part of working on 
There were a surprising number, all different; and I’m not sure I found them all either.

More information about the hotspot-gc-dev mailing list