< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp

Print this page
rev 55321 : 8225572: Shenandoah: Move JNIHandles root out of serial roots
rev 55322 : 8225550: Shenandoah: Prevent SH::object_iterate() call's side-effects


 131 private:
 132   ShenandoahSerialRoots          _serial_roots;
 133   ShenandoahJNIHandleRoots       _jni_roots;
 134   ShenandoahClassLoaderDataRoots _cld_roots;
 135   ShenandoahThreadRoots          _thread_roots;
 136   ShenandoahCodeCacheRoots<ITR>  _code_roots;
 137 public:
 138   ShenandoahRootScanner(uint n_workers, ShenandoahPhaseTimings::Phase phase);
 139 
 140   // Apply oops, clds and blobs to all strongly reachable roots in the system,
 141   // during class unloading cycle
 142   void strong_roots_do(uint worker_id, OopClosure* cl);
 143   void strong_roots_do(uint worker_id, OopClosure* oops, CLDClosure* clds, CodeBlobClosure* code, ThreadClosure* tc = NULL);
 144 
 145   // Apply oops, clds and blobs to all strongly reachable roots and weakly reachable
 146   // roots when class unloading is disabled during this cycle
 147   void roots_do(uint worker_id, OopClosure* cl);
 148   void roots_do(uint worker_id, OopClosure* oops, CLDClosure* clds, CodeBlobClosure* code, ThreadClosure* tc = NULL);
 149   // For heap object iteration
 150   void roots_do_unchecked(OopClosure* cl);

 151 };
 152 
 153 typedef ShenandoahRootScanner<ShenandoahAllCodeRootsIterator> ShenandoahAllRootScanner;
 154 typedef ShenandoahRootScanner<ShenandoahCsetCodeRootsIterator> ShenandoahCSetRootScanner;
 155 
 156 // Evacuate all roots at a safepoint
 157 class ShenandoahRootEvacuator : public ShenandoahRootProcessor {
 158 private:
 159   ShenandoahSerialRoots          _serial_roots;
 160   ShenandoahJNIHandleRoots       _jni_roots;
 161   ShenandoahClassLoaderDataRoots _cld_roots;
 162   ShenandoahThreadRoots          _thread_roots;
 163   ShenandoahWeakRoots            _weak_roots;
 164   ShenandoahStringDedupRoots     _dedup_roots;
 165   ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots;
 166 
 167 public:
 168   ShenandoahRootEvacuator(uint n_workers, ShenandoahPhaseTimings::Phase phase);
 169 
 170   void roots_do(uint worker_id, OopClosure* oops);




 131 private:
 132   ShenandoahSerialRoots          _serial_roots;
 133   ShenandoahJNIHandleRoots       _jni_roots;
 134   ShenandoahClassLoaderDataRoots _cld_roots;
 135   ShenandoahThreadRoots          _thread_roots;
 136   ShenandoahCodeCacheRoots<ITR>  _code_roots;
 137 public:
 138   ShenandoahRootScanner(uint n_workers, ShenandoahPhaseTimings::Phase phase);
 139 
 140   // Apply oops, clds and blobs to all strongly reachable roots in the system,
 141   // during class unloading cycle
 142   void strong_roots_do(uint worker_id, OopClosure* cl);
 143   void strong_roots_do(uint worker_id, OopClosure* oops, CLDClosure* clds, CodeBlobClosure* code, ThreadClosure* tc = NULL);
 144 
 145   // Apply oops, clds and blobs to all strongly reachable roots and weakly reachable
 146   // roots when class unloading is disabled during this cycle
 147   void roots_do(uint worker_id, OopClosure* cl);
 148   void roots_do(uint worker_id, OopClosure* oops, CLDClosure* clds, CodeBlobClosure* code, ThreadClosure* tc = NULL);
 149   // For heap object iteration
 150   void roots_do_unchecked(OopClosure* cl);
 151   void strong_roots_do_unchecked(OopClosure* cl);
 152 };
 153 
 154 typedef ShenandoahRootScanner<ShenandoahAllCodeRootsIterator> ShenandoahAllRootScanner;
 155 typedef ShenandoahRootScanner<ShenandoahCsetCodeRootsIterator> ShenandoahCSetRootScanner;
 156 
 157 // Evacuate all roots at a safepoint
 158 class ShenandoahRootEvacuator : public ShenandoahRootProcessor {
 159 private:
 160   ShenandoahSerialRoots          _serial_roots;
 161   ShenandoahJNIHandleRoots       _jni_roots;
 162   ShenandoahClassLoaderDataRoots _cld_roots;
 163   ShenandoahThreadRoots          _thread_roots;
 164   ShenandoahWeakRoots            _weak_roots;
 165   ShenandoahStringDedupRoots     _dedup_roots;
 166   ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots;
 167 
 168 public:
 169   ShenandoahRootEvacuator(uint n_workers, ShenandoahPhaseTimings::Phase phase);
 170 
 171   void roots_do(uint worker_id, OopClosure* oops);


< prev index next >