From 055f8e3d684105857ad1a51e8f811d4149333dbc Mon Sep 17 00:00:00 2001
Date: Fri, 22 Jan 2021 11:34:34 +0800
Subject: backport of JDK-8141356

Summary: Explicitly stop CMS threads during VM termination
LLT:
Bug url: https://bugs.openjdk.java.net/browse/JDK-8141356
---
 hotspot/src/share/vm/memory/genCollectedHeap.cpp | 8 ++++++++
 hotspot/src/share/vm/memory/genCollectedHeap.hpp | 3 +++
 2 files changed, 11 insertions(+)

diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp
index 1221da276..7f4fc0d61 100644
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp
@@ -1406,3 +1406,11 @@ jlong GenCollectedHeap::millis_since_last_gc() {
   }
   return retVal;
 }
+
+void GenCollectedHeap::stop() {
+#if INCLUDE_ALL_GCS
+  if (UseConcMarkSweepGC) {
+    ConcurrentMarkSweepThread::stop();
+  }
+#endif
+}
diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.hpp b/hotspot/src/share/vm/memory/genCollectedHeap.hpp
index 1a2fcaa06..416ae8741 100644
--- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp
@@ -538,6 +538,9 @@ private:
 protected:
   virtual void gc_prologue(bool full);
   virtual void gc_epilogue(bool full);
+
+public:
+  void stop();
 };
 
 #endif // SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP
-- 
2.19.0

