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 } |