mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 01:24:33 +02:00
7085906: Replace the permgen allocated sentinelRef with a self-looped end
Remove the sentinelRef and let the last Reference in a discovered chain point back to itself. Reviewed-by: ysr, jmasa
This commit is contained in:
parent
a9cd50a1c8
commit
5b6ba4e611
11 changed files with 96 additions and 103 deletions
|
@ -52,8 +52,6 @@ class DiscoveredList;
|
|||
|
||||
class ReferenceProcessor : public CHeapObj {
|
||||
protected:
|
||||
// End of list marker
|
||||
static oop _sentinelRef;
|
||||
MemRegion _span; // (right-open) interval of heap
|
||||
// subject to wkref discovery
|
||||
bool _discovering_refs; // true when discovery enabled
|
||||
|
@ -106,8 +104,6 @@ class ReferenceProcessor : public CHeapObj {
|
|||
int max_num_q() { return _max_num_q; }
|
||||
void set_active_mt_degree(int v) { _num_q = v; }
|
||||
DiscoveredList* discovered_soft_refs() { return _discoveredSoftRefs; }
|
||||
static oop sentinel_ref() { return _sentinelRef; }
|
||||
static oop* adr_sentinel_ref() { return &_sentinelRef; }
|
||||
ReferencePolicy* setup_policy(bool always_clear) {
|
||||
_current_soft_ref_policy = always_clear ?
|
||||
_always_clear_soft_ref_policy : _default_soft_ref_policy;
|
||||
|
@ -230,6 +226,7 @@ class ReferenceProcessor : public CHeapObj {
|
|||
HeapWord* discovered_addr);
|
||||
void verify_ok_to_handle_reflists() PRODUCT_RETURN;
|
||||
|
||||
void clear_discovered_references(DiscoveredList& refs_list);
|
||||
void abandon_partial_discovered_list(DiscoveredList& refs_list);
|
||||
|
||||
// Calculate the number of jni handles.
|
||||
|
@ -314,7 +311,6 @@ class ReferenceProcessor : public CHeapObj {
|
|||
|
||||
// iterate over oops
|
||||
void weak_oops_do(OopClosure* f); // weak roots
|
||||
static void oops_do(OopClosure* f); // strong root(s)
|
||||
|
||||
// Balance each of the discovered lists.
|
||||
void balance_all_queues();
|
||||
|
@ -340,7 +336,6 @@ class ReferenceProcessor : public CHeapObj {
|
|||
// debugging
|
||||
void verify_no_references_recorded() PRODUCT_RETURN;
|
||||
void verify_referent(oop obj) PRODUCT_RETURN;
|
||||
static void verify();
|
||||
|
||||
// clear the discovered lists (unlinking each entry).
|
||||
void clear_discovered_references() PRODUCT_RETURN;
|
||||
|
@ -524,12 +519,10 @@ protected:
|
|||
EnqueueTask(ReferenceProcessor& ref_processor,
|
||||
DiscoveredList refs_lists[],
|
||||
HeapWord* pending_list_addr,
|
||||
oop sentinel_ref,
|
||||
int n_queues)
|
||||
: _ref_processor(ref_processor),
|
||||
_refs_lists(refs_lists),
|
||||
_pending_list_addr(pending_list_addr),
|
||||
_sentinel_ref(sentinel_ref),
|
||||
_n_queues(n_queues)
|
||||
{ }
|
||||
|
||||
|
@ -540,7 +533,6 @@ protected:
|
|||
ReferenceProcessor& _ref_processor;
|
||||
DiscoveredList* _refs_lists;
|
||||
HeapWord* _pending_list_addr;
|
||||
oop _sentinel_ref;
|
||||
int _n_queues;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue