RFR (S): 8189355: Cleanup of BarrierSet barrier functions

Per Liden per.liden at oracle.com
Wed Oct 18 06:30:07 UTC 2017


Hi Erik,

Looks good. Just one comment:

share/gc/shared/cardTableModRefBS.hpp:

  194  public:
  195   inline void inline_write_region(MemRegion mr) {
  196     dirty_MemRegion(mr);
  197   }
  198
  199  protected:
  200   void write_region_work(MemRegion mr) {
  201     inline_write_region(mr);
  202   }
  203
  204  public:
  205   inline void inline_write_ref_array(MemRegion mr) {
  206     dirty_MemRegion(mr);
  207   }
  208
  209  protected:
  210   void write_ref_array_work(MemRegion mr) {
  211     inline_write_ref_array(mr);
  212   }

Looks like we can collapse these four functions into two? I can't see 
any other uses of the inline_* functions.

/Per

On 2017-10-17 12:27, Erik Österlund wrote:
> Hi,
>
> The BarrierSet class has a bunch of unused or used in a seemingly
> nonsense way code. Some methods are used but only used in assertion, and
> are expected to return true (the has_*_opt methods). Others describe
> barriers that are never called from anywhere. This might have made sense
> at some point, but arguably does not any more. There is also an enum
> called Flags not referenced from anywhere.
>
> I would also like to get rid of devirtualize_reference_writes() which
> devirtualizes calls to the post-write barrier for card marking
> specifically by loading and comparing the type of barrier set. I have
> run a bunch of benchmarks and this optimization did not seem to provide
> any benefit. It will also soon be superseded by the new GC barrier
> interface.
>
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8189355
>
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8189355/webrev.00/
>
> Thanks,
> /Erik



More information about the hotspot-gc-dev mailing list