src/hotspot/share/gc/g1/g1RemSet.hpp
author tschatzl
Mon, 26 Mar 2018 16:51:43 +0200
changeset 49607 acffe6ff3ae7
parent 49455 848864ed9b17
child 49806 2d62570a615c
permissions -rw-r--r--
8180415: Rebuild remembered sets during the concurrent cycle Summary: In general maintain remembered sets of old regions only from the start of the concurrent cycle to the mixed gc they are used, at most until the end of the mixed phase. Reviewed-by: sjohanss, sangheki
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     1
/*
49164
7e958a8ebcd3 8195142: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 48969
diff changeset
     2
 * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     4
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     7
 * published by the Free Software Foundation.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     8
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    13
 * accompanied this code).
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    14
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3590
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3590
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3590
diff changeset
    21
 * questions.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    22
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    23
 */
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    24
30764
fec48bf5a827 8079792: GC directory structure cleanup
pliden
parents: 29693
diff changeset
    25
#ifndef SHARE_VM_GC_G1_G1REMSET_HPP
fec48bf5a827 8079792: GC directory structure cleanup
pliden
parents: 29693
diff changeset
    26
#define SHARE_VM_GC_G1_G1REMSET_HPP
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7385
diff changeset
    27
35198
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    28
#include "gc/g1/dirtyCardQueue.hpp"
49164
7e958a8ebcd3 8195142: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 48969
diff changeset
    29
#include "gc/g1/g1CardTable.hpp"
49607
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 49455
diff changeset
    30
#include "gc/g1/g1OopClosures.hpp"
30764
fec48bf5a827 8079792: GC directory structure cleanup
pliden
parents: 29693
diff changeset
    31
#include "gc/g1/g1RemSetSummary.hpp"
35198
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    32
#include "gc/g1/heapRegion.hpp"
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    33
#include "memory/allocation.hpp"
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    34
#include "memory/iterator.hpp"
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
    35
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    36
// A G1RemSet provides ways of iterating over pointers into a selected
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    37
// collection set.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    38
35198
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    39
class BitMap;
49455
848864ed9b17 8199604: Rename CardTableModRefBS to CardTableBarrierSet
eosterlund
parents: 49347
diff changeset
    40
class CardTableBarrierSet;
35461
1068dcb8d315 8146399: Refactor the BlockOffsetTable classes.
david
parents: 35210
diff changeset
    41
class G1BlockOffsetTable;
35198
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    42
class CodeBlobClosure;
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    43
class G1CollectedHeap;
49607
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 49455
diff changeset
    44
class G1CMBitMap;
38172
90f405aac699 8155524: HotCardCache shouldn't be part of ConcurrentG1Refine
kbarrett
parents: 37988
diff changeset
    45
class G1HotCardCache;
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
    46
class G1RemSetScanState;
46572
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
    47
class G1ParScanThreadState;
37985
539c597ee0fa 8154154: Separate G1 specific policy code from the CollectorPolicy class hierarchy
mgerdin
parents: 37414
diff changeset
    48
class G1Policy;
46572
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
    49
class G1ScanObjsDuringScanRSClosure;
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
    50
class G1ScanObjsDuringUpdateRSClosure;
35198
1365be812a7d 8145674: Fix includes and forward declarations in g1Remset files
tschatzl
parents: 35070
diff changeset
    51
class HeapRegionClaimer;
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    52
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
    53
// A G1RemSet in which each heap region has a rem set that records the
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
    54
// external heap references into it.  Uses a mod ref bs to track updates,
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
    55
// so that they can be used to update the individual region remsets.
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 11586
diff changeset
    56
class G1RemSet: public CHeapObj<mtGC> {
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
    57
private:
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
    58
  G1RemSetScanState* _scan_state;
37414
2672ba9af0dc 8151386: Extract card live data out of G1ConcurrentMark
tschatzl
parents: 35461
diff changeset
    59
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
    60
  G1RemSetSummary _prev_period_summary;
33789
4a76a42bd42e 8141434: G1CollectedHeap::into_cset_dirty_card_queue_set should be moved to G1RemSet
david
parents: 33213
diff changeset
    61
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    62
  // Scan all remembered sets of the collection set for references into the collection
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    63
  // set.
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    64
  void scan_rem_set(G1ParScanThreadState* pss,
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    65
                    CodeBlobClosure* heap_region_codeblobs,
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    66
                    uint worker_i);
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    67
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    68
  // Flush remaining refinement buffers for cross-region references to either evacuate references
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    69
  // into the collection set or update the remembered set.
46670
55a3c36b64b2 8183539: Remove G1RemSet::_into_cset_dirty_card_queue_set
ehelin
parents: 46635
diff changeset
    70
  void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
    71
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    72
  G1CollectedHeap* _g1;
46614
ae1105fff9e4 8179677: Let G1Remset::_conc_refined_cards only count number of cards concurrently refined
tschatzl
parents: 46613
diff changeset
    73
  size_t _num_conc_refined_cards; // Number of cards refined concurrently to the mutator.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    74
49164
7e958a8ebcd3 8195142: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 48969
diff changeset
    75
  G1CardTable*           _ct;
37985
539c597ee0fa 8154154: Separate G1 specific policy code from the CollectorPolicy class hierarchy
mgerdin
parents: 37414
diff changeset
    76
  G1Policy*              _g1p;
38172
90f405aac699 8155524: HotCardCache shouldn't be part of ConcurrentG1Refine
kbarrett
parents: 37988
diff changeset
    77
  G1HotCardCache*        _hot_card_cache;
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    78
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    79
public:
35210
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    80
  // Gives an approximation on how many threads can be expected to add records to
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    81
  // a remembered set in parallel. This can be used for sizing data structures to
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    82
  // decrease performance losses due to data structure sharing.
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    83
  // Examples for quantities that influence this value are the maximum number of
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    84
  // mutator threads, maximum number of concurrent refinement or GC threads.
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    85
  static uint num_par_rem_sets();
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    86
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    87
  // Initialize data that depends on the heap size being known.
37414
2672ba9af0dc 8151386: Extract card live data out of G1ConcurrentMark
tschatzl
parents: 35461
diff changeset
    88
  void initialize(size_t capacity, uint max_regions);
35210
eb1d5c68bf64 8145672: Remove dependency of G1FromCardCache to HeapRegionRemSet
tschatzl
parents: 35198
diff changeset
    89
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    90
  // This is called to reset dual hash tables after the gc pause
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    91
  // is finished and the initial hash table is no longer being
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    92
  // scanned.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    93
  void cleanupHRRS();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    94
38172
90f405aac699 8155524: HotCardCache shouldn't be part of ConcurrentG1Refine
kbarrett
parents: 37988
diff changeset
    95
  G1RemSet(G1CollectedHeap* g1,
49164
7e958a8ebcd3 8195142: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 48969
diff changeset
    96
           G1CardTable* ct,
38172
90f405aac699 8155524: HotCardCache shouldn't be part of ConcurrentG1Refine
kbarrett
parents: 37988
diff changeset
    97
           G1HotCardCache* hot_card_cache);
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
    98
  ~G1RemSet();
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    99
46572
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   100
  // Process all oops in the collection set from the cards in the refinement buffers and
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   101
  // remembered sets using pss.
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17854
diff changeset
   102
  //
46572
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   103
  // Further applies heap_region_codeblobs on the oops of the unmarked nmethods on the strong code
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   104
  // roots list for each region in the collection set.
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   105
  void oops_into_collection_set_do(G1ParScanThreadState* pss,
46571
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   106
                                   CodeBlobClosure* heap_region_codeblobs,
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   107
                                   uint worker_i);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   108
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
   109
  // Prepare for and cleanup after an oops_into_collection_set_do
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
   110
  // call.  Must call each of these once before and after (in sequential
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   111
  // code) any thread calls oops_into_collection_set_do.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   112
  void prepare_for_oops_into_collection_set_do();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   113
  void cleanup_after_oops_into_collection_set_do();
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
   114
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
   115
  G1RemSetScanState* scan_state() const { return _scan_state; }
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
   116
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   117
  // Refine the card corresponding to "card_ptr". Safe to be called concurrently
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   118
  // to the mutator.
46519
40c9c132f961 8177707: Specialize G1RemSet::refine_card for concurrent/during safepoint refinement
tschatzl
parents: 46518
diff changeset
   119
  void refine_card_concurrently(jbyte* card_ptr,
40c9c132f961 8177707: Specialize G1RemSet::refine_card for concurrent/during safepoint refinement
tschatzl
parents: 46518
diff changeset
   120
                                uint worker_i);
40c9c132f961 8177707: Specialize G1RemSet::refine_card for concurrent/during safepoint refinement
tschatzl
parents: 46518
diff changeset
   121
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   122
  // Refine the card corresponding to "card_ptr", applying the given closure to
46670
55a3c36b64b2 8183539: Remove G1RemSet::_into_cset_dirty_card_queue_set
ehelin
parents: 46635
diff changeset
   123
  // all references found. Must only be called during gc.
46778
f504c6f2eea5 8183121: Add information about scanned and skipped cards during UpdateRS
tschatzl
parents: 46670
diff changeset
   124
  // Returns whether the card has been scanned.
f504c6f2eea5 8183121: Add information about scanned and skipped cards during UpdateRS
tschatzl
parents: 46670
diff changeset
   125
  bool refine_card_during_gc(jbyte* card_ptr, G1ScanObjsDuringUpdateRSClosure* update_rs_cl);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   126
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
   127
  // Print accumulated summary info from the start of the VM.
46291
a24addecca3a 8168038: Some methods in G1RemSet are virtual unnecessarily
jprovino
parents: 38172
diff changeset
   128
  void print_summary_info();
6958
cfa71cf3564d 6971296: G1: simplify G1RemSet class hierarchy
johnc
parents: 6250
diff changeset
   129
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
   130
  // Print accumulated summary info from the last time called.
46291
a24addecca3a 8168038: Some methods in G1RemSet are virtual unnecessarily
jprovino
parents: 38172
diff changeset
   131
  void print_periodic_summary_info(const char* header, uint period_count);
17854
d65bc1546091 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
tschatzl
parents: 17327
diff changeset
   132
46614
ae1105fff9e4 8179677: Let G1Remset::_conc_refined_cards only count number of cards concurrently refined
tschatzl
parents: 46613
diff changeset
   133
  size_t num_conc_refined_cards() const { return _num_conc_refined_cards; }
37414
2672ba9af0dc 8151386: Extract card live data out of G1ConcurrentMark
tschatzl
parents: 35461
diff changeset
   134
49607
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 49455
diff changeset
   135
  // Rebuilds the remembered set by scanning from bottom to TARS for all regions
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 49455
diff changeset
   136
  // using the given work gang.
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 49455
diff changeset
   137
  void rebuild_rem_set(G1ConcurrentMark* cm, WorkGang* workers, uint worker_id_offset);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   138
};
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   139
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   140
class G1ScanRSForRegionClosure : public HeapRegionClosure {
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
   141
  G1RemSetScanState* _scan_state;
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
   142
46571
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   143
  size_t _cards_scanned;
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   144
  size_t _cards_claimed;
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   145
  size_t _cards_skipped;
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   146
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   147
  G1CollectedHeap* _g1h;
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   148
46572
fef0d64b2263 8175554: Improve G1UpdateRSOrPushRefClosure
tschatzl
parents: 46571
diff changeset
   149
  G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   150
  CodeBlobClosure* _code_root_cl;
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   151
35461
1068dcb8d315 8146399: Refactor the BlockOffsetTable classes.
david
parents: 35210
diff changeset
   152
  G1BlockOffsetTable* _bot;
49164
7e958a8ebcd3 8195142: Refactor out card table from CardTableModRefBS to flatten the BarrierSet hierarchy
eosterlund
parents: 48969
diff changeset
   153
  G1CardTable *_ct;
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   154
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   155
  double _strong_code_root_scan_time_sec;
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   156
  uint   _worker_i;
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   157
46635
ef7cac5de811 8179679: Rearrange filters before card scanning
tschatzl
parents: 46614
diff changeset
   158
  void claim_card(size_t card_index, const uint region_idx_for_card);
ef7cac5de811 8179679: Rearrange filters before card scanning
tschatzl
parents: 46614
diff changeset
   159
  void scan_card(MemRegion mr, uint region_idx_for_card);
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
   160
  void scan_strong_code_roots(HeapRegion* r);
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   161
public:
46575
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   162
  G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   163
                           G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   164
                           CodeBlobClosure* code_root_cl,
d6fb8a7a7843 8178151: Clean up G1RemSet files
tschatzl
parents: 46572
diff changeset
   165
                           uint worker_i);
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   166
48969
jwilhelm
parents: 48890
diff changeset
   167
  bool do_heap_region(HeapRegion* r);
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   168
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   169
  double strong_code_root_scan_time_sec() {
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   170
    return _strong_code_root_scan_time_sec;
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   171
  }
37988
bf4018edea5e 8153503: Move remset scan iteration claim to remset local data structure
tschatzl
parents: 37985
diff changeset
   172
46571
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   173
  size_t cards_scanned() const { return _cards_scanned; }
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   174
  size_t cards_claimed() const { return _cards_claimed; }
c70b36f0730d 8178148: Log more detailed information about scan rs phase
tschatzl
parents: 46519
diff changeset
   175
  size_t cards_skipped() const { return _cards_skipped; }
34246
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   176
};
d2c05216f375 8142390: Move ScanRSClosure to header file
ehelin
parents: 33789
diff changeset
   177
30764
fec48bf5a827 8079792: GC directory structure cleanup
pliden
parents: 29693
diff changeset
   178
#endif // SHARE_VM_GC_G1_G1REMSET_HPP