src/hotspot/share/gc/shared/cardTableModRefBSForCTRS.hpp
author stefank
Thu, 22 Feb 2018 18:36:32 +0100
changeset 49048 4e8c86b75428
parent 48961 120b61d50f85
permissions -rw-r--r--
8198525: Move _size_policy out of GenCollectorPolicy into GenCollectedHeap Reviewed-by: pliden, sjohanss
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31964
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     1
/*
48961
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
     2
 * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
31964
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     4
 *
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     7
 * published by the Free Software Foundation.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     8
 *
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    13
 * accompanied this code).
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    14
 *
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    18
 *
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    21
 * questions.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    22
 *
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    23
 */
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    24
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    25
#ifndef SHARE_VM_GC_SHARED_CARDTABLEMODREFBSFORCTRS_HPP
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    26
#define SHARE_VM_GC_SHARED_CARDTABLEMODREFBSFORCTRS_HPP
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    27
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    28
#include "gc/shared/cardTableModRefBS.hpp"
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    29
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    30
class CardTableRS;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    31
class DirtyCardToOopClosure;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    32
class OopsInGenClosure;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    33
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    34
// A specialization for the CardTableRS gen rem set.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    35
class CardTableModRefBSForCTRS: public CardTableModRefBS {
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    36
  friend class CardTableRS;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    37
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    38
public:
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    39
  CardTableModRefBSForCTRS(MemRegion whole_heap);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    40
  ~CardTableModRefBSForCTRS();
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    41
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    42
  virtual void initialize();
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    43
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    44
  void set_CTRS(CardTableRS* rs) { _rs = rs; }
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    45
48961
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    46
  virtual bool card_mark_must_follow_store() const {
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    47
    return UseConcMarkSweepGC;
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    48
  }
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    49
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    50
  virtual bool is_in_young(oop obj) const;
120b61d50f85 8195103: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 47998
diff changeset
    51
31964
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    52
private:
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    53
  CardTableRS* _rs;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    54
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    55
  // *** Support for parallel card scanning.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    56
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    57
  // dirty and precleaned are equivalent wrt younger_refs_iter.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    58
  static bool card_is_dirty_wrt_gen_iter(jbyte cv) {
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    59
    return cv == dirty_card || cv == precleaned_card;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    60
  }
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    61
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    62
  // Returns "true" iff the value "cv" will cause the card containing it
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    63
  // to be scanned in the current traversal.  May be overridden by
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    64
  // subtypes.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    65
  bool card_will_be_scanned(jbyte cv);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    66
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    67
  // Returns "true" iff the value "cv" may have represented a dirty card at
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    68
  // some point.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    69
  bool card_may_have_been_dirty(jbyte cv);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    70
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    71
  // Iterate over the portion of the card-table which covers the given
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    72
  // region mr in the given space and apply cl to any dirty sub-regions
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    73
  // of mr. Clears the dirty cards as they are processed.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    74
  void non_clean_card_iterate_possibly_parallel(Space* sp, MemRegion mr,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    75
                                                OopsInGenClosure* cl, CardTableRS* ct,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    76
                                                uint n_threads);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    77
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    78
  // Work method used to implement non_clean_card_iterate_possibly_parallel()
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    79
  // above in the parallel case.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    80
  void non_clean_card_iterate_parallel_work(Space* sp, MemRegion mr,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    81
                                            OopsInGenClosure* cl, CardTableRS* ct,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    82
                                            uint n_threads);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    83
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    84
  // This is an array, one element per covered region of the card table.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    85
  // Each entry is itself an array, with one element per chunk in the
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    86
  // covered region.  Each entry of these arrays is the lowest non-clean
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    87
  // card of the corresponding chunk containing part of an object from the
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    88
  // previous chunk, or else NULL.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    89
  typedef jbyte*  CardPtr;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    90
  typedef CardPtr* CardArr;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    91
  CardArr* _lowest_non_clean;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    92
  size_t*  _lowest_non_clean_chunk_size;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    93
  uintptr_t* _lowest_non_clean_base_chunk_index;
42632
c4f00b77b6d4 8170409: CMS: Crash in CardTableModRefBSForCTRS::process_chunk_boundaries
simonis
parents: 31964
diff changeset
    94
  volatile int* _last_LNC_resizing_collection;
31964
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    95
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    96
  // Initializes "lowest_non_clean" to point to the array for the region
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    97
  // covering "sp", and "lowest_non_clean_base_chunk_index" to the chunk
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    98
  // index of the corresponding to the first element of that array.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
    99
  // Ensures that these arrays are of sufficient size, allocating if necessary.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   100
  // May be called by several threads concurrently.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   101
  void get_LNC_array_for_space(Space* sp,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   102
                               jbyte**& lowest_non_clean,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   103
                               uintptr_t& lowest_non_clean_base_chunk_index,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   104
                               size_t& lowest_non_clean_chunk_size);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   105
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   106
  // Returns the number of chunks necessary to cover "mr".
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   107
  size_t chunks_to_cover(MemRegion mr) {
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   108
    return (size_t)(addr_to_chunk_index(mr.last()) -
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   109
                    addr_to_chunk_index(mr.start()) + 1);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   110
  }
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   111
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   112
  // Returns the index of the chunk in a stride which
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   113
  // covers the given address.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   114
  uintptr_t addr_to_chunk_index(const void* addr) {
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   115
    uintptr_t card = (uintptr_t) byte_for(addr);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   116
    return card / ParGCCardsPerStrideChunk;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   117
  }
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   118
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   119
  // Apply cl, which must either itself apply dcto_cl or be dcto_cl,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   120
  // to the cards in the stride (of n_strides) within the given space.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   121
  void process_stride(Space* sp,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   122
                      MemRegion used,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   123
                      jint stride, int n_strides,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   124
                      OopsInGenClosure* cl,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   125
                      CardTableRS* ct,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   126
                      jbyte** lowest_non_clean,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   127
                      uintptr_t lowest_non_clean_base_chunk_index,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   128
                      size_t lowest_non_clean_chunk_size);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   129
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   130
  // Makes sure that chunk boundaries are handled appropriately, by
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   131
  // adjusting the min_done of dcto_cl, and by using a special card-table
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   132
  // value to indicate how min_done should be set.
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   133
  void process_chunk_boundaries(Space* sp,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   134
                                DirtyCardToOopClosure* dcto_cl,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   135
                                MemRegion chunk_mr,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   136
                                MemRegion used,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   137
                                jbyte** lowest_non_clean,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   138
                                uintptr_t lowest_non_clean_base_chunk_index,
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   139
                                size_t    lowest_non_clean_chunk_size);
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   140
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   141
};
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   142
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   143
template<>
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   144
struct BarrierSet::GetName<CardTableModRefBSForCTRS> {
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   145
  static const BarrierSet::Name value = BarrierSet::CardTableForRS;
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   146
};
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   147
47998
fb0275c320a0 8189871: Refactor GC barriers to use declarative semantics
eosterlund
parents: 47216
diff changeset
   148
template<>
fb0275c320a0 8189871: Refactor GC barriers to use declarative semantics
eosterlund
parents: 47216
diff changeset
   149
struct BarrierSet::GetType<BarrierSet::CardTableForRS> {
fb0275c320a0 8189871: Refactor GC barriers to use declarative semantics
eosterlund
parents: 47216
diff changeset
   150
  typedef CardTableModRefBSForCTRS type;
fb0275c320a0 8189871: Refactor GC barriers to use declarative semantics
eosterlund
parents: 47216
diff changeset
   151
};
31964
d34ad1715d96 8130931: Refactor CardTableModRefBS[ForCTRS]
kbarrett
parents:
diff changeset
   152
47998
fb0275c320a0 8189871: Refactor GC barriers to use declarative semantics
eosterlund
parents: 47216
diff changeset
   153
#endif // SHARE_VM_GC_SHARED_CARDTABLEMODREFBSFORCTRS_HPP