< prev index next >
src/share/vm/gc_implementation/g1/satbQueue.hpp
Print this page
rev 7209 : 6979279
*** 76,95 ****
void verify_oops_in_buffer() NOT_DEBUG_RETURN;
};
class SATBMarkQueueSet: public PtrQueueSet {
! ObjectClosure* _closure;
! ObjectClosure** _par_closures; // One per ParGCThread.
ObjPtrQueue _shared_satb_queue;
- // Utility function to support sequential and parallel versions. If
- // "par" is true, then "worker" is the par thread id; if "false", worker
- // is ignored.
- bool apply_closure_to_completed_buffer_work(bool par, uint worker);
-
#ifdef ASSERT
void dump_active_states(bool expected_active);
void verify_active_states(bool expected_active);
#endif // ASSERT
--- 76,89 ----
void verify_oops_in_buffer() NOT_DEBUG_RETURN;
};
class SATBMarkQueueSet: public PtrQueueSet {
! ObjectClosure** _closures; // One per ParGCThread.
ObjPtrQueue _shared_satb_queue;
#ifdef ASSERT
void dump_active_states(bool expected_active);
void verify_active_states(bool expected_active);
#endif // ASSERT
*** 114,138 ****
// Register "blk" as "the closure" for all queues. Only one such closure
// is allowed. The "apply_closure_to_completed_buffer" method will apply
// this closure to a completed buffer, and "iterate_closure_all_threads"
// applies it to partially-filled buffers (the latter should only be done
// with the world stopped).
! void set_closure(ObjectClosure* closure);
! // Set the parallel closures: pointer is an array of pointers to
! // closures, one for each parallel GC thread.
! void set_par_closure(int i, ObjectClosure* closure);
// If there exists some completed buffer, pop it, then apply the
// registered closure to all its elements, and return true. If no
// completed buffers exist, return false.
! bool apply_closure_to_completed_buffer() {
! return apply_closure_to_completed_buffer_work(false, 0);
! }
! // Parallel version of the above.
! bool par_apply_closure_to_completed_buffer(uint worker) {
! return apply_closure_to_completed_buffer_work(true, worker);
! }
// Apply the given closure on enqueued and currently-active buffers
// respectively. Both methods are read-only, i.e., they do not
// modify any of the buffers.
void iterate_completed_buffers_read_only(ObjectClosure* cl);
--- 108,123 ----
// Register "blk" as "the closure" for all queues. Only one such closure
// is allowed. The "apply_closure_to_completed_buffer" method will apply
// this closure to a completed buffer, and "iterate_closure_all_threads"
// applies it to partially-filled buffers (the latter should only be done
// with the world stopped).
! void set_closure(int i, ObjectClosure* closure);
// If there exists some completed buffer, pop it, then apply the
// registered closure to all its elements, and return true. If no
// completed buffers exist, return false.
! bool apply_closure_to_completed_buffer(uint worker);
// Apply the given closure on enqueued and currently-active buffers
// respectively. Both methods are read-only, i.e., they do not
// modify any of the buffers.
void iterate_completed_buffers_read_only(ObjectClosure* cl);
< prev index next >