src/hotspot/share/runtime/vmThread.hpp
changeset 59325 3636bab5e81e
parent 55128 35192d9c2b76
--- a/src/hotspot/share/runtime/vmThread.hpp	Fri Nov 29 11:26:25 2019 +0100
+++ b/src/hotspot/share/runtime/vmThread.hpp	Fri Nov 29 12:09:25 2019 +0100
@@ -30,6 +30,11 @@
 #include "runtime/task.hpp"
 #include "runtime/vmOperations.hpp"
 
+class VM_QueueHead : public VM_None {
+ public:
+  VM_QueueHead() : VM_None("QueueHead") {}
+};
+
 //
 // Prioritized queue of VM operations.
 //
@@ -52,14 +57,15 @@
   // can scan them from oops_do
   VM_Operation* _drain_list;
 
+  static VM_QueueHead _queue_head[nof_priorities];
+
   // Double-linked non-empty list insert.
   void insert(VM_Operation* q,VM_Operation* n);
   void unlink(VM_Operation* q);
 
   // Basic queue manipulation
   bool queue_empty                (int prio);
-  void queue_add_front            (int prio, VM_Operation *op);
-  void queue_add_back             (int prio, VM_Operation *op);
+  void queue_add                  (int prio, VM_Operation *op);
   VM_Operation* queue_remove_front(int prio);
   void queue_oops_do(int queue, OopClosure* f);
   void drain_list_oops_do(OopClosure* f);
@@ -73,7 +79,6 @@
   // Highlevel operations. Encapsulates policy
   void add(VM_Operation *op);
   VM_Operation* remove_next();                        // Returns next or null
-  VM_Operation* remove_next_at_safepoint_priority()   { return queue_remove_front(SafepointPriority); }
   VM_Operation* drain_at_safepoint_priority() { return queue_drain(SafepointPriority); }
   void set_drain_list(VM_Operation* list) { _drain_list = list; }
   bool peek_at_safepoint_priority() { return queue_peek(SafepointPriority); }
@@ -139,10 +144,10 @@
 
   // Tester
   bool is_VM_thread() const                      { return true; }
-  bool is_GC_thread() const                      { return true; }
 
   // The ever running loop for the VMThread
   void loop();
+  static void check_for_forced_cleanup();
 
   // Called to stop the VM thread
   static void wait_for_vm_thread_exit();