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);
|