< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentRefineThread.hpp
Print this page
rev 57716 : [mq]: remove_cbl_mon
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
+ * 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,28 +43,29 @@
Tickspan _total_refinement_time;
size_t _total_refined_cards;
uint _worker_id;
- bool _active;
- Monitor* _monitor;
+ // Each thread has its own semaphore. The i-th thread is responsible for
+ // signaling thread i+1 if the number of buffers in the queue exceeds a
+ // threshold for that thread. Semaphores are also used to wake up the
+ // threads during termination. The 0th (primary) worker is notified by
+ // mutator threads.
+ Semaphore* _notifier;
+ volatile bool _should_notify;
+ bool maybe_deactivate(bool more_work);
+
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); }
+ virtual void run_service();
+ virtual void stop_service();
- 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; }
< prev index next >