equal
deleted
inserted
replaced
54 #include "runtime/thread.inline.hpp" |
54 #include "runtime/thread.inline.hpp" |
55 #include "runtime/vmThread.hpp" |
55 #include "runtime/vmThread.hpp" |
56 #include "utilities/copy.hpp" |
56 #include "utilities/copy.hpp" |
57 #include "utilities/events.hpp" |
57 #include "utilities/events.hpp" |
58 #include "utilities/stack.inline.hpp" |
58 #include "utilities/stack.inline.hpp" |
|
59 #if INCLUDE_JVMCI |
|
60 #include "jvmci/jvmci.hpp" |
|
61 #endif |
59 |
62 |
60 void GenMarkSweep::invoke_at_safepoint(ReferenceProcessor* rp, bool clear_all_softrefs) { |
63 void GenMarkSweep::invoke_at_safepoint(ReferenceProcessor* rp, bool clear_all_softrefs) { |
61 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); |
64 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); |
62 |
65 |
63 GenCollectedHeap* gch = GenCollectedHeap::heap(); |
66 GenCollectedHeap* gch = GenCollectedHeap::heap(); |
231 // Unload nmethods. |
234 // Unload nmethods. |
232 CodeCache::do_unloading(&is_alive, purged_class); |
235 CodeCache::do_unloading(&is_alive, purged_class); |
233 |
236 |
234 // Prune dead klasses from subklass/sibling/implementor lists. |
237 // Prune dead klasses from subklass/sibling/implementor lists. |
235 Klass::clean_weak_klass_links(purged_class); |
238 Klass::clean_weak_klass_links(purged_class); |
|
239 |
|
240 // Clean JVMCI metadata handles. |
|
241 JVMCI_ONLY(JVMCI::do_unloading(purged_class)); |
236 } |
242 } |
237 |
243 |
238 gc_tracer()->report_object_count_after_gc(&is_alive); |
244 gc_tracer()->report_object_count_after_gc(&is_alive); |
239 } |
245 } |
240 |
246 |