src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp
changeset 57669 18f189e69b29
parent 55547 c7a7728eeddc
child 57732 23e13076e102
--- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp	Wed Aug 07 08:10:45 2019 -0400
+++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp	Wed Aug 07 09:17:08 2019 -0400
@@ -93,17 +93,23 @@
 };
 
 template <bool CONCURRENT>
-class ShenandoahWeakRoot {
+class ShenandoahVMRoot {
 private:
   OopStorage::ParState<CONCURRENT, false /* is_const */> _itr;
   const ShenandoahPhaseTimings::GCParPhases _phase;
 public:
-  ShenandoahWeakRoot(OopStorage* storage, ShenandoahPhaseTimings::GCParPhases phase);
+  ShenandoahVMRoot(OopStorage* storage, ShenandoahPhaseTimings::GCParPhases phase);
 
   template <typename Closure>
   void oops_do(Closure* cl, uint worker_id);
 };
 
+template <bool CONCURRENT>
+class ShenandoahWeakRoot : public ShenandoahVMRoot<CONCURRENT> {
+public:
+  ShenandoahWeakRoot(OopStorage* storage, ShenandoahPhaseTimings::GCParPhases phase);
+};
+
 template <>
 class ShenandoahWeakRoot<false /*concurrent*/> {
 private:
@@ -150,11 +156,13 @@
 };
 
 template <bool CONCURRENT>
-class ShenandoahJNIHandleRoots {
+class ShenandoahVMRoots {
 private:
-  OopStorage::ParState<CONCURRENT, false /*is_const*/> _itr;
+  ShenandoahVMRoot<CONCURRENT>    _jni_handle_roots;
+  ShenandoahVMRoot<CONCURRENT>    _vm_global_roots;
+
 public:
-  ShenandoahJNIHandleRoots();
+  ShenandoahVMRoots();
 
   template <typename T>
   void oops_do(T* cl, uint worker_id = 0);
@@ -217,7 +225,7 @@
   ShenandoahSerialRoots                                     _serial_roots;
   ShenandoahThreadRoots                                     _thread_roots;
   ShenandoahCodeCacheRoots<ITR>                             _code_roots;
-  ShenandoahJNIHandleRoots<false /*concurrent*/ >           _jni_roots;
+  ShenandoahVMRoots<false /*concurrent*/ >                  _vm_roots;
   ShenandoahClassLoaderDataRoots<false /*concurrent*/, false /*single threaded*/>
                                                             _cld_roots;
 public:
@@ -243,7 +251,7 @@
 private:
   ShenandoahSerialRoots                                    _serial_roots;
   ShenandoahThreadRoots                                    _thread_roots;
-  ShenandoahJNIHandleRoots<false /*concurrent*/>           _jni_roots;
+  ShenandoahVMRoots<false /*concurrent*/>                  _vm_roots;
   ShenandoahClassLoaderDataRoots<false /*concurrent*/, true /*single threaded*/>
                                                            _cld_roots;
   ShenandoahCodeCacheRoots<ShenandoahAllCodeRootsIterator> _code_roots;
@@ -259,7 +267,7 @@
 class ShenandoahRootEvacuator : public ShenandoahRootProcessor {
 private:
   ShenandoahSerialRoots                                     _serial_roots;
-  ShenandoahJNIHandleRoots<false /*concurrent*/>            _jni_roots;
+  ShenandoahVMRoots<false /*concurrent*/>                   _vm_roots;
   ShenandoahClassLoaderDataRoots<false /*concurrent*/, false /*single threaded*/>
                                                             _cld_roots;
   ShenandoahThreadRoots                                     _thread_roots;
@@ -279,7 +287,7 @@
 class ShenandoahRootUpdater : public ShenandoahRootProcessor {
 private:
   ShenandoahSerialRoots                                     _serial_roots;
-  ShenandoahJNIHandleRoots<false /*concurrent*/>            _jni_roots;
+  ShenandoahVMRoots<false /*concurrent*/>                   _vm_roots;
   ShenandoahClassLoaderDataRoots<false /*concurrent*/, false /*single threaded*/>
                                                             _cld_roots;
   ShenandoahThreadRoots                                     _thread_roots;
@@ -300,7 +308,7 @@
 class ShenandoahRootAdjuster : public ShenandoahRootProcessor {
 private:
   ShenandoahSerialRoots                                     _serial_roots;
-  ShenandoahJNIHandleRoots<false /*concurrent*/>            _jni_roots;
+  ShenandoahVMRoots<false /*concurrent*/>                   _vm_roots;
   ShenandoahClassLoaderDataRoots<false /*concurrent*/, false /*single threaded*/>
                                                             _cld_roots;
   ShenandoahThreadRoots                                     _thread_roots;