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