< prev index next >

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

Print this page
rev 50093 : [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
 283   // by removing references with strongly reachable referents.
 284   // The first argument is a predicate on an oop that indicates
 285   // its (strong) reachability and the second is a closure that
 286   // may be used to incrementalize or abort the precleaning process.
 287   // The caller is responsible for taking care of potential
 288   // interference with concurrent operations on these lists
 289   // (or predicates involved) by other threads. Currently
 290   // only used by the CMS collector.
 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
 274   // by removing references with strongly reachable referents.
 275   // The first argument is a predicate on an oop that indicates
 276   // its (strong) reachability and the second is a closure that
 277   // may be used to incrementalize or abort the precleaning process.
 278   // The caller is responsible for taking care of potential
 279   // interference with concurrent operations on these lists
 280   // (or predicates involved) by other threads. Currently
 281   // only used by the CMS collector.
 282   void preclean_discovered_references(BoolObjectClosure* is_alive,
 283                                       OopClosure*        keep_alive,
 284                                       VoidClosure*       complete_gc,


< prev index next >