--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Fri Jun 15 14:17:28 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Mon Jun 25 16:00:55 2012 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
class G1BlockOffsetSharedArray;
class HeapRegion;
class HeapRegionRemSetIterator;
-class PosParPRT;
+class PerRegionTable;
class SparsePRT;
// Essentially a wrapper around SparsePRTCleanupTask. See
@@ -79,15 +79,14 @@
size_t _n_coarse_entries;
static jint _n_coarsenings;
- PosParPRT** _fine_grain_regions;
- size_t _n_fine_entries;
+ PerRegionTable** _fine_grain_regions;
+ size_t _n_fine_entries;
-#define SAMPLE_FOR_EVICTION 1
-#if SAMPLE_FOR_EVICTION
+ // Used to sample a subset of the fine grain PRTs to determine which
+ // PRT to evict and coarsen.
size_t _fine_eviction_start;
static size_t _fine_eviction_stride;
static size_t _fine_eviction_sample_size;
-#endif
SparsePRT _sparse_table;
@@ -98,21 +97,18 @@
// Requires "prt" to be the first element of the bucket list appropriate
// for "hr". If this list contains an entry for "hr", return it,
// otherwise return "NULL".
- PosParPRT* find_region_table(size_t ind, HeapRegion* hr) const;
+ PerRegionTable* find_region_table(size_t ind, HeapRegion* hr) const;
- // Find, delete, and return a candidate PosParPRT, if any exists,
+ // Find, delete, and return a candidate PerRegionTable, if any exists,
// adding the deleted region to the coarse bitmap. Requires the caller
// to hold _m, and the fine-grain table to be full.
- PosParPRT* delete_region_table();
+ PerRegionTable* delete_region_table();
// If a PRT for "hr" is in the bucket list indicated by "ind" (which must
// be the correct index for "hr"), delete it and return true; else return
// false.
bool del_single_region_table(size_t ind, HeapRegion* hr);
- static jint _cache_probes;
- static jint _cache_hits;
-
// Indexed by thread X heap region, to minimize thread contention.
static int** _from_card_cache;
static size_t _from_card_cache_max_regions;
@@ -127,10 +123,6 @@
// sense.
void add_reference(OopOrNarrowOopStar from, int tid);
- void add_reference(OopOrNarrowOopStar from) {
- return add_reference(from, 0);
- }
-
// Removes any entries shown by the given bitmaps to contain only dead
// objects.
void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm);
@@ -233,14 +225,12 @@
static jint n_coarsenings() { return OtherRegionsTable::n_coarsenings(); }
- /* Used in the sequential case. Returns "true" iff this addition causes
- the size limit to be reached. */
+ // Used in the sequential case.
void add_reference(OopOrNarrowOopStar from) {
- _other_regions.add_reference(from);
+ _other_regions.add_reference(from, 0);
}
- /* Used in the parallel case. Returns "true" iff this addition causes
- the size limit to be reached. */
+ // Used in the parallel case.
void add_reference(OopOrNarrowOopStar from, int tid) {
_other_regions.add_reference(from, tid);
}
@@ -253,15 +243,6 @@
// entries for this region in other remsets.
void clear();
- // Forget any entries due to pointers from "from_hr".
- void clear_incoming_entry(HeapRegion* from_hr) {
- _other_regions.clear_incoming_entry(from_hr);
- }
-
-#if 0
- virtual void cleanup() = 0;
-#endif
-
// Attempt to claim the region. Returns true iff this call caused an
// atomic transition from Unclaimed to Claimed.
bool claim_iter();
@@ -290,12 +271,6 @@
// Initialize the given iterator to iterate over this rem set.
void init_iterator(HeapRegionRemSetIterator* iter) const;
-#if 0
- // Apply the "do_card" method to the start address of every card in the
- // rem set. Returns false if some application of the closure aborted.
- virtual bool card_iterate(CardClosure* iter) = 0;
-#endif
-
// The actual # of bytes this hr_remset takes up.
size_t mem_size() {
return _other_regions.mem_size()
@@ -322,10 +297,7 @@
void print() const;
// Called during a stop-world phase to perform any deferred cleanups.
- // The second version may be called by parallel threads after then finish
- // collection work.
static void cleanup();
- static void par_cleanup();
// Declare the heap size (in # of regions) to the HeapRegionRemSet(s).
// (Uses it to initialize from_card_cache).
@@ -367,7 +339,7 @@
// Local caching of HRRS fields.
const BitMap* _coarse_map;
- PosParPRT** _fine_grain_regions;
+ PerRegionTable** _fine_grain_regions;
G1BlockOffsetSharedArray* _bosa;
G1CollectedHeap* _g1h;
@@ -404,8 +376,9 @@
// Index of bucket-list we're working on.
int _fine_array_index;
+
// Per Region Table we're doing within current bucket list.
- PosParPRT* _fine_cur_prt;
+ PerRegionTable* _fine_cur_prt;
/* SparsePRT::*/ SparsePRTIter _sparse_iter;
@@ -435,12 +408,4 @@
}
};
-#if 0
-class CardClosure: public Closure {
-public:
- virtual void do_card(HeapWord* card_start) = 0;
-};
-
-#endif
-
#endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONREMSET_HPP