--- old/src/share/vm/gc/parallel/psMarkSweep.cpp 2016-10-31 17:46:48.000000000 -0700 +++ new/src/share/vm/gc/parallel/psMarkSweep.cpp 2016-10-31 17:46:48.000000000 -0700 @@ -48,6 +48,7 @@ #include "gc/shared/spaceDecorator.hpp" #include "logging/log.hpp" #include "oops/oop.inline.hpp" +#include "aot/aotLoader.hpp" #include "runtime/biasedLocking.hpp" #include "runtime/fprofiler.hpp" #include "runtime/safepoint.hpp" @@ -515,6 +516,9 @@ ClassLoaderDataGraph::always_strong_cld_do(follow_cld_closure()); // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure())); + if (UseAOT) { + AOTLoader::oops_do(mark_and_push_closure()); + } } // Flush marking stack. @@ -611,6 +615,9 @@ CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations); CodeCache::blobs_do(&adjust_from_blobs); + if (UseAOT) { + AOTLoader::oops_do(adjust_pointer_closure()); + } StringTable::oops_do(adjust_pointer_closure()); ref_processor()->weak_oops_do(adjust_pointer_closure()); PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());