comparison src/share/vm/memory/referenceProcessor.hpp @ 1833:8b10f48633dc

6984287: Regularize how GC parallel workers are specified. Summary: Associate number of GC workers with the workgang as opposed to the task. Reviewed-by: johnc, ysr
author jmasa
date Mon, 20 Sep 2010 14:38:38 -0700
parents c18cbe5936b8
children 0715f0cf171d
comparison
equal deleted inserted replaced
1781:97fbf5beff7b 1833:8b10f48633dc
1 /* 1 /*
2 * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
83 // . the current policy below is either one of the above 83 // . the current policy below is either one of the above
84 ReferencePolicy* _current_soft_ref_policy; 84 ReferencePolicy* _current_soft_ref_policy;
85 85
86 // The discovered ref lists themselves 86 // The discovered ref lists themselves
87 87
88 // The MT'ness degree of the queues below 88 // The active MT'ness degree of the queues below
89 int _num_q; 89 int _num_q;
90 // The maximum MT'ness degree of the queues below
91 int _max_num_q;
90 // Arrays of lists of oops, one per thread 92 // Arrays of lists of oops, one per thread
91 DiscoveredList* _discoveredSoftRefs; 93 DiscoveredList* _discoveredSoftRefs;
92 DiscoveredList* _discoveredWeakRefs; 94 DiscoveredList* _discoveredWeakRefs;
93 DiscoveredList* _discoveredFinalRefs; 95 DiscoveredList* _discoveredFinalRefs;
94 DiscoveredList* _discoveredPhantomRefs; 96 DiscoveredList* _discoveredPhantomRefs;
95 97
96 public: 98 public:
97 int num_q() { return _num_q; } 99 int num_q() { return _num_q; }
100 void set_mt_degree(int v) { _num_q = v; }
98 DiscoveredList* discovered_soft_refs() { return _discoveredSoftRefs; } 101 DiscoveredList* discovered_soft_refs() { return _discoveredSoftRefs; }
99 static oop sentinel_ref() { return _sentinelRef; } 102 static oop sentinel_ref() { return _sentinelRef; }
100 static oop* adr_sentinel_ref() { return &_sentinelRef; } 103 static oop* adr_sentinel_ref() { return &_sentinelRef; }
101 ReferencePolicy* setup_policy(bool always_clear) { 104 ReferencePolicy* setup_policy(bool always_clear) {
102 _current_soft_ref_policy = always_clear ? 105 _current_soft_ref_policy = always_clear ?
242 _discovery_is_mt(false), 245 _discovery_is_mt(false),
243 _discovered_list_needs_barrier(false), 246 _discovered_list_needs_barrier(false),
244 _bs(NULL), 247 _bs(NULL),
245 _is_alive_non_header(NULL), 248 _is_alive_non_header(NULL),
246 _num_q(0), 249 _num_q(0),
250 _max_num_q(0),
247 _processing_is_mt(false), 251 _processing_is_mt(false),
248 _next_id(0) 252 _next_id(0)
249 {} 253 {}
250 254
251 ReferenceProcessor(MemRegion span, bool atomic_discovery, 255 ReferenceProcessor(MemRegion span, bool atomic_discovery,
309 void set_enqueuing_is_done(bool v) { _enqueuing_is_done = v; } 313 void set_enqueuing_is_done(bool v) { _enqueuing_is_done = v; }
310 314
311 // iterate over oops 315 // iterate over oops
312 void weak_oops_do(OopClosure* f); // weak roots 316 void weak_oops_do(OopClosure* f); // weak roots
313 static void oops_do(OopClosure* f); // strong root(s) 317 static void oops_do(OopClosure* f); // strong root(s)
318
319 // Balance each of the discovered lists.
320 void balance_all_queues();
314 321
315 // Discover a Reference object, using appropriate discovery criteria 322 // Discover a Reference object, using appropriate discovery criteria
316 bool discover_reference(oop obj, ReferenceType rt); 323 bool discover_reference(oop obj, ReferenceType rt);
317 324
318 // Process references found during GC (called by the garbage collector) 325 // Process references found during GC (called by the garbage collector)