< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentRefineThread.hpp
Print this page
rev 57716 : imported patch remove_cbl_mon
rev 57717 : [mq]: helper_classes
*** 1,7 ****
/*
! * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 43,70 ****
Tickspan _total_refinement_time;
size_t _total_refined_cards;
uint _worker_id;
! bool _active;
! Monitor* _monitor;
G1ConcurrentRefine* _cr;
void wait_for_completed_buffers();
! void set_active(bool x) { _active = x; }
! // Deactivate this thread.
! void deactivate();
!
! bool is_primary() { return (_worker_id == 0); }
- void run_service();
- void stop_service();
public:
G1ConcurrentRefineThread(G1ConcurrentRefine* cg1r, uint worker_id);
- bool is_active();
// Activate this thread.
void activate();
Tickspan total_refinement_time() const { return _total_refinement_time; }
size_t total_refined_cards() const { return _total_refined_cards; }
--- 43,79 ----
Tickspan _total_refinement_time;
size_t _total_refined_cards;
uint _worker_id;
! // _notifier and _should_notify form a single-reader / multi-writer
! // notification mechanism. The owning concurrent refinement thread is the
! // single reader. The writers are (other) threads that call activate() on
! // the thread. The i-th concurrent refinement thread is responsible for
! // activating thread i+1 if the number of buffers in the queue exceeds a
! // threshold for that i+1th thread. The 0th (primary) thread is activated
! // by threads that add cards to the dirty card queue set when the primary
! // thread's threshold is exceeded. activate() is also used to wake up the
! // threads during termination, so even the non-primary thread case is
! // multi-writer.
! Semaphore* _notifier;
! volatile bool _should_notify;
!
! // Called when no refinement work found for this thread.
! // Returns true if should deactivate.
! bool maybe_deactivate(bool more_work);
!
G1ConcurrentRefine* _cr;
void wait_for_completed_buffers();
! virtual void run_service();
! virtual void stop_service();
public:
G1ConcurrentRefineThread(G1ConcurrentRefine* cg1r, uint worker_id);
// Activate this thread.
void activate();
Tickspan total_refinement_time() const { return _total_refinement_time; }
size_t total_refined_cards() const { return _total_refined_cards; }
< prev index next >