< prev index next >

src/share/vm/gc/shared/referenceProcessor.hpp

Print this page




 347                                    BoolObjectClosure* is_alive,
 348                                    OopClosure*        keep_alive,
 349                                    VoidClosure*       complete_gc,
 350                                    YieldClosure*      yield);
 351 
 352   // round-robin mod _num_q (not: _not_ mode _max_num_q)
 353   uint next_id() {
 354     uint id = _next_id;
 355     if (++_next_id == _num_q) {
 356       _next_id = 0;
 357     }
 358     return id;
 359   }
 360   DiscoveredList* get_discovered_list(ReferenceType rt);
 361   inline void add_to_discovered_list_mt(DiscoveredList& refs_list, oop obj,
 362                                         HeapWord* discovered_addr);
 363 
 364   void clear_discovered_references(DiscoveredList& refs_list);
 365 
 366   // Calculate the number of jni handles.
 367   unsigned int count_jni_refs();


 368 
 369   // Balances reference queues.
 370   void balance_queues(DiscoveredList ref_lists[]);
 371 
 372   // Update (advance) the soft ref master clock field.
 373   void update_soft_ref_master_clock();
 374 
 375  public:
 376   // Default parameters give you a vanilla reference processor.
 377   ReferenceProcessor(MemRegion span,
 378                      bool mt_processing = false, uint mt_processing_degree = 1,
 379                      bool mt_discovery  = false, uint mt_discovery_degree  = 1,
 380                      bool atomic_discovery = true,
 381                      BoolObjectClosure* is_alive_non_header = NULL);
 382 
 383   // RefDiscoveryPolicy values
 384   enum DiscoveryPolicy {
 385     ReferenceBasedDiscovery = 0,
 386     ReferentBasedDiscovery  = 1,
 387     DiscoveryPolicyMin      = ReferenceBasedDiscovery,




 347                                    BoolObjectClosure* is_alive,
 348                                    OopClosure*        keep_alive,
 349                                    VoidClosure*       complete_gc,
 350                                    YieldClosure*      yield);
 351 
 352   // round-robin mod _num_q (not: _not_ mode _max_num_q)
 353   uint next_id() {
 354     uint id = _next_id;
 355     if (++_next_id == _num_q) {
 356       _next_id = 0;
 357     }
 358     return id;
 359   }
 360   DiscoveredList* get_discovered_list(ReferenceType rt);
 361   inline void add_to_discovered_list_mt(DiscoveredList& refs_list, oop obj,
 362                                         HeapWord* discovered_addr);
 363 
 364   void clear_discovered_references(DiscoveredList& refs_list);
 365 
 366   // Calculate the number of jni handles.
 367   size_t count_jni_refs();
 368 
 369   void log_reflist_counts(DiscoveredList ref_lists[], size_t total_count) PRODUCT_RETURN;
 370 
 371   // Balances reference queues.
 372   void balance_queues(DiscoveredList ref_lists[]);
 373 
 374   // Update (advance) the soft ref master clock field.
 375   void update_soft_ref_master_clock();
 376 
 377  public:
 378   // Default parameters give you a vanilla reference processor.
 379   ReferenceProcessor(MemRegion span,
 380                      bool mt_processing = false, uint mt_processing_degree = 1,
 381                      bool mt_discovery  = false, uint mt_discovery_degree  = 1,
 382                      bool atomic_discovery = true,
 383                      BoolObjectClosure* is_alive_non_header = NULL);
 384 
 385   // RefDiscoveryPolicy values
 386   enum DiscoveryPolicy {
 387     ReferenceBasedDiscovery = 0,
 388     ReferentBasedDiscovery  = 1,
 389     DiscoveryPolicyMin      = ReferenceBasedDiscovery,


< prev index next >