src/share/vm/memory/referenceProcessor.hpp

Print this page




 239   // Update (advance) the soft ref master clock field.
 240   void update_soft_ref_master_clock();
 241 
 242  public:
 243   // constructor
 244   ReferenceProcessor():
 245     _span((HeapWord*)NULL, (HeapWord*)NULL),
 246     _discoveredSoftRefs(NULL),  _discoveredWeakRefs(NULL),
 247     _discoveredFinalRefs(NULL), _discoveredPhantomRefs(NULL),
 248     _discovering_refs(false),
 249     _discovery_is_atomic(true),
 250     _enqueuing_is_done(false),
 251     _discovery_is_mt(false),
 252     _discovered_list_needs_barrier(false),
 253     _bs(NULL),
 254     _is_alive_non_header(NULL),
 255     _num_q(0),
 256     _max_num_q(0),
 257     _processing_is_mt(false),
 258     _next_id(0)
 259   {}
 260 
 261   ReferenceProcessor(MemRegion span, bool atomic_discovery,
 262                      bool mt_discovery,
 263                      int mt_degree = 1,
 264                      bool mt_processing = false,
 265                      bool discovered_list_needs_barrier = false);
 266 
 267   // Allocates and initializes a reference processor.
 268   static ReferenceProcessor* create_ref_processor(
 269     MemRegion          span,
 270     bool               atomic_discovery,
 271     bool               mt_discovery,
 272     BoolObjectClosure* is_alive_non_header = NULL,
 273     int                parallel_gc_threads = 1,
 274     bool               mt_processing = false,
 275     bool               discovered_list_needs_barrier = false);
 276 
 277   // RefDiscoveryPolicy values
 278   enum DiscoveryPolicy {
 279     ReferenceBasedDiscovery = 0,
 280     ReferentBasedDiscovery  = 1,
 281     DiscoveryPolicyMin      = ReferenceBasedDiscovery,
 282     DiscoveryPolicyMax      = ReferentBasedDiscovery
 283   };
 284 
 285   static void init_statics();
 286 
 287  public:
 288   // get and set "is_alive_non_header" field
 289   BoolObjectClosure* is_alive_non_header() {
 290     return _is_alive_non_header;
 291   }
 292   void set_is_alive_non_header(BoolObjectClosure* is_alive_non_header) {
 293     _is_alive_non_header = is_alive_non_header;
 294   }




 239   // Update (advance) the soft ref master clock field.
 240   void update_soft_ref_master_clock();
 241 
 242  public:
 243   // constructor
 244   ReferenceProcessor():
 245     _span((HeapWord*)NULL, (HeapWord*)NULL),
 246     _discoveredSoftRefs(NULL),  _discoveredWeakRefs(NULL),
 247     _discoveredFinalRefs(NULL), _discoveredPhantomRefs(NULL),
 248     _discovering_refs(false),
 249     _discovery_is_atomic(true),
 250     _enqueuing_is_done(false),
 251     _discovery_is_mt(false),
 252     _discovered_list_needs_barrier(false),
 253     _bs(NULL),
 254     _is_alive_non_header(NULL),
 255     _num_q(0),
 256     _max_num_q(0),
 257     _processing_is_mt(false),
 258     _next_id(0)
 259   { }
 260 
 261   // Default parameters give you a vanilla reference processor.
 262   ReferenceProcessor(MemRegion span,
 263                      bool mt_processing = false, int mt_processing_degree = 1,
 264                      bool mt_discovery  = false, int mt_discovery_degree  = 1,
 265                      bool atomic_discovery = true,






 266                      BoolObjectClosure* is_alive_non_header = NULL,


 267                      bool discovered_list_needs_barrier = false);
 268 
 269   // RefDiscoveryPolicy values
 270   enum DiscoveryPolicy {
 271     ReferenceBasedDiscovery = 0,
 272     ReferentBasedDiscovery  = 1,
 273     DiscoveryPolicyMin      = ReferenceBasedDiscovery,
 274     DiscoveryPolicyMax      = ReferentBasedDiscovery
 275   };
 276 
 277   static void init_statics();
 278 
 279  public:
 280   // get and set "is_alive_non_header" field
 281   BoolObjectClosure* is_alive_non_header() {
 282     return _is_alive_non_header;
 283   }
 284   void set_is_alive_non_header(BoolObjectClosure* is_alive_non_header) {
 285     _is_alive_non_header = is_alive_non_header;
 286   }