--- a/src/hotspot/share/gc/parallel/psMarkSweep.cpp Wed May 01 12:41:26 2019 -0400
+++ b/src/hotspot/share/gc/parallel/psMarkSweep.cpp Wed May 01 12:31:29 2019 -0700
@@ -62,6 +62,9 @@
#include "utilities/align.hpp"
#include "utilities/events.hpp"
#include "utilities/stack.inline.hpp"
+#if INCLUDE_JVMCI
+#include "jvmci/jvmci.hpp"
+#endif
elapsedTimer PSMarkSweep::_accumulated_time;
jlong PSMarkSweep::_time_of_last_gc = 0;
@@ -524,7 +527,8 @@
ClassLoaderDataGraph::always_strong_cld_do(follow_cld_closure());
// Do not treat nmethods as strong roots for mark/sweep, since we can unload them.
//ScavengableNMethods::scavengable_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
- AOTLoader::oops_do(mark_and_push_closure());
+ AOT_ONLY(AOTLoader::oops_do(mark_and_push_closure());)
+ JVMCI_ONLY(JVMCI::oops_do(mark_and_push_closure());)
}
// Flush marking stack.
@@ -562,6 +566,9 @@
// Prune dead klasses from subklass/sibling/implementor lists.
Klass::clean_weak_klass_links(purged_class);
+
+ // Clean JVMCI metadata handles.
+ JVMCI_ONLY(JVMCI::do_unloading(purged_class));
}
_gc_tracer->report_object_count_after_gc(is_alive_closure());
@@ -615,7 +622,10 @@
CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
CodeCache::blobs_do(&adjust_from_blobs);
- AOTLoader::oops_do(adjust_pointer_closure());
+ AOT_ONLY(AOTLoader::oops_do(adjust_pointer_closure());)
+
+ JVMCI_ONLY(JVMCI::oops_do(adjust_pointer_closure());)
+
ref_processor()->weak_oops_do(adjust_pointer_closure());
PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());