< prev index next >

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

Print this page
rev 50107 : [mq]: pp2_work


 245                                   BoolObjectClosure*            is_alive,
 246                                   OopClosure*                   keep_alive,
 247                                   VoidClosure*                  complete_gc,
 248                                   AbstractRefProcTaskExecutor*  task_executor,
 249                                   ReferenceProcessorPhaseTimes* phase_times);
 250 
 251   // Work methods used by the method process_discovered_reflist
 252   // Phase1: keep alive all those referents that are otherwise
 253   // dead but which must be kept alive by policy (and their closure).
 254   void process_phase1(DiscoveredList&     refs_list,
 255                       ReferencePolicy*    policy,
 256                       BoolObjectClosure*  is_alive,
 257                       OopClosure*         keep_alive,
 258                       VoidClosure*        complete_gc);
 259   // Phase2: remove all those references whose referents are
 260   // reachable.
 261   void process_phase2(DiscoveredList&    refs_list,
 262                       BoolObjectClosure* is_alive,
 263                       OopClosure*        keep_alive,
 264                       VoidClosure*       complete_gc);
 265   // Work methods in support of process_phase2
 266   void pp2_work(DiscoveredList&    refs_list,
 267                 BoolObjectClosure* is_alive,
 268                 OopClosure*        keep_alive);
 269   void pp2_work_concurrent_discovery(
 270                 DiscoveredList&    refs_list,
 271                 BoolObjectClosure* is_alive,
 272                 OopClosure*        keep_alive,
 273                 VoidClosure*       complete_gc);
 274   // Phase3: process the referents by either clearing them
 275   // or keeping them alive (and their closure), and enqueuing them.
 276   void process_phase3(DiscoveredList&    refs_list,
 277                       bool               clear_referent,
 278                       BoolObjectClosure* is_alive,
 279                       OopClosure*        keep_alive,
 280                       VoidClosure*       complete_gc);
 281 
 282   // "Preclean" all the discovered reference lists by removing references that
 283   // are active (e.g. due to the mutator calling enqueue()) or with NULL or
 284   // strongly reachable referents.
 285   // The first argument is a predicate on an oop that indicates
 286   // its (strong) reachability and the fourth is a closure that
 287   // may be used to incrementalize or abort the precleaning process.
 288   // The caller is responsible for taking care of potential
 289   // interference with concurrent operations on these lists
 290   // (or predicates involved) by other threads.
 291   void preclean_discovered_references(BoolObjectClosure* is_alive,
 292                                       OopClosure*        keep_alive,
 293                                       VoidClosure*       complete_gc,




 245                                   BoolObjectClosure*            is_alive,
 246                                   OopClosure*                   keep_alive,
 247                                   VoidClosure*                  complete_gc,
 248                                   AbstractRefProcTaskExecutor*  task_executor,
 249                                   ReferenceProcessorPhaseTimes* phase_times);
 250 
 251   // Work methods used by the method process_discovered_reflist
 252   // Phase1: keep alive all those referents that are otherwise
 253   // dead but which must be kept alive by policy (and their closure).
 254   void process_phase1(DiscoveredList&     refs_list,
 255                       ReferencePolicy*    policy,
 256                       BoolObjectClosure*  is_alive,
 257                       OopClosure*         keep_alive,
 258                       VoidClosure*        complete_gc);
 259   // Phase2: remove all those references whose referents are
 260   // reachable.
 261   void process_phase2(DiscoveredList&    refs_list,
 262                       BoolObjectClosure* is_alive,
 263                       OopClosure*        keep_alive,
 264                       VoidClosure*       complete_gc);









 265   // Phase3: process the referents by either clearing them
 266   // or keeping them alive (and their closure), and enqueuing them.
 267   void process_phase3(DiscoveredList&    refs_list,
 268                       bool               clear_referent,
 269                       BoolObjectClosure* is_alive,
 270                       OopClosure*        keep_alive,
 271                       VoidClosure*       complete_gc);
 272 
 273   // "Preclean" all the discovered reference lists by removing references that
 274   // are active (e.g. due to the mutator calling enqueue()) or with NULL or
 275   // strongly reachable referents.
 276   // The first argument is a predicate on an oop that indicates
 277   // its (strong) reachability and the fourth is a closure that
 278   // may be used to incrementalize or abort the precleaning process.
 279   // The caller is responsible for taking care of potential
 280   // interference with concurrent operations on these lists
 281   // (or predicates involved) by other threads.
 282   void preclean_discovered_references(BoolObjectClosure* is_alive,
 283                                       OopClosure*        keep_alive,
 284                                       VoidClosure*       complete_gc,


< prev index next >