comparison src/share/vm/memory/referenceProcessor.hpp @ 20804:7848fc12602b

Merge with jdk8u40-b25
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Tue, 07 Apr 2015 14:58:49 +0200
parents 52b4284cb496 c2844108a708
children
comparison
equal deleted inserted replaced
20184:84105dcdb05b 20804:7848fc12602b
23 */ 23 */
24 24
25 #ifndef SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP 25 #ifndef SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
26 #define SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP 26 #define SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
27 27
28 #include "gc_implementation/shared/gcTrace.hpp"
28 #include "memory/referencePolicy.hpp" 29 #include "memory/referencePolicy.hpp"
29 #include "memory/referenceProcessorStats.hpp" 30 #include "memory/referenceProcessorStats.hpp"
30 #include "memory/referenceType.hpp" 31 #include "memory/referenceType.hpp"
31 #include "oops/instanceRefKlass.hpp" 32 #include "oops/instanceRefKlass.hpp"
32 33
261 // Arrays of lists of oops, one per thread (pointers into master array above) 262 // Arrays of lists of oops, one per thread (pointers into master array above)
262 DiscoveredList* _discoveredSoftRefs; 263 DiscoveredList* _discoveredSoftRefs;
263 DiscoveredList* _discoveredWeakRefs; 264 DiscoveredList* _discoveredWeakRefs;
264 DiscoveredList* _discoveredFinalRefs; 265 DiscoveredList* _discoveredFinalRefs;
265 DiscoveredList* _discoveredPhantomRefs; 266 DiscoveredList* _discoveredPhantomRefs;
266 267 DiscoveredList* _discoveredCleanerRefs;
267 public: 268
268 static int number_of_subclasses_of_ref() { return (REF_PHANTOM - REF_OTHER); } 269 public:
270 static int number_of_subclasses_of_ref() { return (REF_CLEANER - REF_OTHER); }
269 271
270 uint num_q() { return _num_q; } 272 uint num_q() { return _num_q; }
271 uint max_num_q() { return _max_num_q; } 273 uint max_num_q() { return _max_num_q; }
272 void set_active_mt_degree(uint v) { _num_q = v; } 274 void set_active_mt_degree(uint v) { _num_q = v; }
273 275
347 // only used by the CMS collector. 349 // only used by the CMS collector.
348 void preclean_discovered_references(BoolObjectClosure* is_alive, 350 void preclean_discovered_references(BoolObjectClosure* is_alive,
349 OopClosure* keep_alive, 351 OopClosure* keep_alive,
350 VoidClosure* complete_gc, 352 VoidClosure* complete_gc,
351 YieldClosure* yield, 353 YieldClosure* yield,
352 GCTimer* gc_timer); 354 GCTimer* gc_timer,
355 GCId gc_id);
353 356
354 // Delete entries in the discovered lists that have 357 // Delete entries in the discovered lists that have
355 // either a null referent or are not active. Such 358 // either a null referent or are not active. Such
356 // Reference objects can result from the clearing 359 // Reference objects can result from the clearing
357 // or enqueueing of Reference objects concurrent 360 // or enqueueing of Reference objects concurrent
478 ReferenceProcessorStats 481 ReferenceProcessorStats
479 process_discovered_references(BoolObjectClosure* is_alive, 482 process_discovered_references(BoolObjectClosure* is_alive,
480 OopClosure* keep_alive, 483 OopClosure* keep_alive,
481 VoidClosure* complete_gc, 484 VoidClosure* complete_gc,
482 AbstractRefProcTaskExecutor* task_executor, 485 AbstractRefProcTaskExecutor* task_executor,
483 GCTimer *gc_timer); 486 GCTimer *gc_timer,
487 GCId gc_id);
484 488
485 // Enqueue references at end of GC (called by the garbage collector) 489 // Enqueue references at end of GC (called by the garbage collector)
486 bool enqueue_discovered_references(AbstractRefProcTaskExecutor* task_executor = NULL); 490 bool enqueue_discovered_references(AbstractRefProcTaskExecutor* task_executor = NULL);
487 491
488 // If a discovery is in process that is being superceded, abandon it: all 492 // If a discovery is in process that is being superceded, abandon it: all