hotspot/src/share/vm/memory/referenceProcessor.hpp
changeset 13728 882756847a04
parent 13195 be27e1b6a4b9
child 18025 b7bcf7497f93
equal deleted inserted replaced
13727:caf5eb7dd4a7 13728:882756847a04
     1 /*
     1 /*
     2  * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   343   // its (strong) reachability and the second is a closure that
   343   // its (strong) reachability and the second is a closure that
   344   // may be used to incrementalize or abort the precleaning process.
   344   // may be used to incrementalize or abort the precleaning process.
   345   // The caller is responsible for taking care of potential
   345   // The caller is responsible for taking care of potential
   346   // interference with concurrent operations on these lists
   346   // interference with concurrent operations on these lists
   347   // (or predicates involved) by other threads. Currently
   347   // (or predicates involved) by other threads. Currently
   348   // only used by the CMS collector.  should_unload_classes is
   348   // only used by the CMS collector.
   349   // used to aid assertion checking when classes are collected.
       
   350   void preclean_discovered_references(BoolObjectClosure* is_alive,
   349   void preclean_discovered_references(BoolObjectClosure* is_alive,
   351                                       OopClosure*        keep_alive,
   350                                       OopClosure*        keep_alive,
   352                                       VoidClosure*       complete_gc,
   351                                       VoidClosure*       complete_gc,
   353                                       YieldClosure*      yield,
   352                                       YieldClosure*      yield);
   354                                       bool               should_unload_classes);
       
   355 
   353 
   356   // Delete entries in the discovered lists that have
   354   // Delete entries in the discovered lists that have
   357   // either a null referent or are not active. Such
   355   // either a null referent or are not active. Such
   358   // Reference objects can result from the clearing
   356   // Reference objects can result from the clearing
   359   // or enqueueing of Reference objects concurrent
   357   // or enqueueing of Reference objects concurrent
   494   // iterate over oops
   492   // iterate over oops
   495   void weak_oops_do(OopClosure* f);       // weak roots
   493   void weak_oops_do(OopClosure* f);       // weak roots
   496 
   494 
   497   // Balance each of the discovered lists.
   495   // Balance each of the discovered lists.
   498   void balance_all_queues();
   496   void balance_all_queues();
       
   497   void verify_list(DiscoveredList& ref_list);
   499 
   498 
   500   // Discover a Reference object, using appropriate discovery criteria
   499   // Discover a Reference object, using appropriate discovery criteria
   501   bool discover_reference(oop obj, ReferenceType rt);
   500   bool discover_reference(oop obj, ReferenceType rt);
   502 
   501 
   503   // Process references found during GC (called by the garbage collector)
   502   // Process references found during GC (called by the garbage collector)