< prev index next >

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

Print this page
rev 55406 : 8225582: Shenandoah: Enable concurrent evacuation of JNIHandles

*** 59,71 **** public: ShenandoahSerialRoots(); void oops_do(OopClosure* cl, uint worker_id); }; ! class ShenandoahJNIHandleRoots : public ShenandoahSerialRoot { public: ShenandoahJNIHandleRoots(); }; class ShenandoahThreadRoots { private: const bool _is_par; --- 59,77 ---- public: ShenandoahSerialRoots(); void oops_do(OopClosure* cl, uint worker_id); }; ! template <bool CONCURRENT = false> ! class ShenandoahJNIHandleRoots { ! private: ! OopStorage::ParState<CONCURRENT, false /* is_const */> _itr; public: ShenandoahJNIHandleRoots(); + + template <typename T> + void oops_do(T* cl, uint worker_id = 0); }; class ShenandoahThreadRoots { private: const bool _is_par;
*** 128,138 **** template <typename ITR> class ShenandoahRootScanner : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahCodeCacheRoots<ITR> _code_roots; public: ShenandoahRootScanner(uint n_workers, ShenandoahPhaseTimings::Phase phase); --- 134,144 ---- template <typename ITR> class ShenandoahRootScanner : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots<> _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahCodeCacheRoots<ITR> _code_roots; public: ShenandoahRootScanner(uint n_workers, ShenandoahPhaseTimings::Phase phase);
*** 156,183 **** // Evacuate all roots at a safepoint class ShenandoahRootEvacuator : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots; public: ! ShenandoahRootEvacuator(uint n_workers, ShenandoahPhaseTimings::Phase phase); void roots_do(uint worker_id, OopClosure* oops); }; // Update all roots at a safepoint class ShenandoahRootUpdater : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots; --- 162,190 ---- // Evacuate all roots at a safepoint class ShenandoahRootEvacuator : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots<> _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots; + bool _include_concurrent_roots; public: ! ShenandoahRootEvacuator(uint n_workers, ShenandoahPhaseTimings::Phase phase, bool include_concurrent_roots); void roots_do(uint worker_id, OopClosure* oops); }; // Update all roots at a safepoint class ShenandoahRootUpdater : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots<> _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _code_roots;
*** 192,202 **** // Adjuster all roots at a safepoint during full gc class ShenandoahRootAdjuster : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahAllCodeRootsIterator> _code_roots; --- 199,209 ---- // Adjuster all roots at a safepoint during full gc class ShenandoahRootAdjuster : public ShenandoahRootProcessor { private: ShenandoahSerialRoots _serial_roots; ! ShenandoahJNIHandleRoots<> _jni_roots; ShenandoahClassLoaderDataRoots _cld_roots; ShenandoahThreadRoots _thread_roots; ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots<ShenandoahAllCodeRootsIterator> _code_roots;
< prev index next >