1.1 --- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp Sat Jul 31 15:10:59 2010 +0100 1.2 +++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp Mon Aug 02 12:51:43 2010 -0700 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -123,7 +123,21 @@ 1.11 int stop_at = 0, 1.12 bool during_pause = false); 1.13 1.14 - bool apply_closure_to_completed_buffer_helper(int worker_i, 1.15 + // If there exists some completed buffer, pop it, then apply the 1.16 + // specified closure to all its elements, nulling out those elements 1.17 + // processed. If all elements are processed, returns "true". If no 1.18 + // completed buffers exist, returns false. If a completed buffer exists, 1.19 + // but is only partially completed before a "yield" happens, the 1.20 + // partially completed buffer (with its processed elements set to NULL) 1.21 + // is returned to the completed buffer set, and this call returns false. 1.22 + bool apply_closure_to_completed_buffer(CardTableEntryClosure* cl, 1.23 + int worker_i = 0, 1.24 + int stop_at = 0, 1.25 + bool during_pause = false); 1.26 + 1.27 + // Helper routine for the above. 1.28 + bool apply_closure_to_completed_buffer_helper(CardTableEntryClosure* cl, 1.29 + int worker_i, 1.30 BufferNode* nd); 1.31 1.32 BufferNode* get_completed_buffer(int stop_at); 1.33 @@ -136,6 +150,9 @@ 1.34 return &_shared_dirty_card_queue; 1.35 } 1.36 1.37 + // Deallocate any completed log buffers 1.38 + void clear(); 1.39 + 1.40 // If a full collection is happening, reset partial logs, and ignore 1.41 // completed ones: the full collection will make them all irrelevant. 1.42 void abandon_logs();