equal
deleted
inserted
replaced
42 #include "memory/allocation.inline.hpp" |
42 #include "memory/allocation.inline.hpp" |
43 #include "memory/universe.hpp" |
43 #include "memory/universe.hpp" |
44 #include "runtime/mutex.hpp" |
44 #include "runtime/mutex.hpp" |
45 #include "services/management.hpp" |
45 #include "services/management.hpp" |
46 #include "utilities/macros.hpp" |
46 #include "utilities/macros.hpp" |
47 #if INCLUDE_JVMCI |
|
48 #include "jvmci/jvmci.hpp" |
|
49 #endif |
|
50 |
47 |
51 void G1RootProcessor::worker_has_discovered_all_strong_classes() { |
48 void G1RootProcessor::worker_has_discovered_all_strong_classes() { |
52 assert(ClassUnloadingWithConcurrentMark, "Currently only needed when doing G1 Class Unloading"); |
49 assert(ClassUnloadingWithConcurrentMark, "Currently only needed when doing G1 Class Unloading"); |
53 |
50 |
54 uint new_value = (uint)Atomic::add(1, &_n_workers_discovered_strong_classes); |
51 uint new_value = (uint)Atomic::add(1, &_n_workers_discovered_strong_classes); |
259 AOTLoader::oops_do(strong_roots); |
256 AOTLoader::oops_do(strong_roots); |
260 } |
257 } |
261 } |
258 } |
262 #endif |
259 #endif |
263 |
260 |
264 #if INCLUDE_JVMCI |
|
265 if (EnableJVMCI) { |
|
266 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::JVMCIRoots, worker_i); |
|
267 if (_process_strong_tasks.try_claim_task(G1RP_PS_JVMCI_oops_do)) { |
|
268 JVMCI::oops_do(strong_roots); |
|
269 } |
|
270 } |
|
271 #endif |
|
272 |
|
273 { |
261 { |
274 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SystemDictionaryRoots, worker_i); |
262 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SystemDictionaryRoots, worker_i); |
275 if (_process_strong_tasks.try_claim_task(G1RP_PS_SystemDictionary_oops_do)) { |
263 if (_process_strong_tasks.try_claim_task(G1RP_PS_SystemDictionary_oops_do)) { |
276 SystemDictionary::oops_do(strong_roots); |
264 SystemDictionary::oops_do(strong_roots); |
277 } |
265 } |