2152 2153 PSParallelCompact::AdjustPointerClosure oop_closure(cm); 2154 PSParallelCompact::AdjustKlassClosure klass_closure(cm); 2155 2156 // General strong roots. 2157 Universe::oops_do(&oop_closure); 2158 JNIHandles::oops_do(&oop_closure); // Global (strong) JNI handles 2159 Threads::oops_do(&oop_closure, NULL); 2160 ObjectSynchronizer::oops_do(&oop_closure); 2161 FlatProfiler::oops_do(&oop_closure); 2162 Management::oops_do(&oop_closure); 2163 JvmtiExport::oops_do(&oop_closure); 2164 SystemDictionary::oops_do(&oop_closure); 2165 ClassLoaderDataGraph::oops_do(&oop_closure, &klass_closure, true); 2166 2167 // Now adjust pointers in remaining weak roots. (All of which should 2168 // have been cleared if they pointed to non-surviving objects.) 2169 // Global (weak) JNI handles 2170 JNIHandles::weak_oops_do(&oop_closure); 2171 2172 CodeBlobToOopClosure adjust_from_blobs(&oop_closure, CodeBlobToOopClosure::FixRelocations); 2173 CodeCache::blobs_do(&adjust_from_blobs); 2174 AOTLoader::oops_do(&oop_closure); 2175 StringTable::oops_do(&oop_closure); 2176 ref_processor()->weak_oops_do(&oop_closure); 2177 // Roots were visited so references into the young gen in roots 2178 // may have been scanned. Process them also. 2179 // Should the reference processor have a span that excludes 2180 // young gen objects? 2181 PSScavenge::reference_processor()->weak_oops_do(&oop_closure); 2182 } 2183 2184 // Helper class to print 8 region numbers per line and then print the total at the end. 2185 class FillableRegionLogger : public StackObj { 2186 private: 2187 Log(gc, compaction) log; 2188 static const int LineLength = 8; 2189 size_t _regions[LineLength]; 2190 int _next_index; 2191 bool _enabled; | 2152 2153 PSParallelCompact::AdjustPointerClosure oop_closure(cm); 2154 PSParallelCompact::AdjustKlassClosure klass_closure(cm); 2155 2156 // General strong roots. 2157 Universe::oops_do(&oop_closure); 2158 JNIHandles::oops_do(&oop_closure); // Global (strong) JNI handles 2159 Threads::oops_do(&oop_closure, NULL); 2160 ObjectSynchronizer::oops_do(&oop_closure); 2161 FlatProfiler::oops_do(&oop_closure); 2162 Management::oops_do(&oop_closure); 2163 JvmtiExport::oops_do(&oop_closure); 2164 SystemDictionary::oops_do(&oop_closure); 2165 ClassLoaderDataGraph::oops_do(&oop_closure, &klass_closure, true); 2166 2167 // Now adjust pointers in remaining weak roots. (All of which should 2168 // have been cleared if they pointed to non-surviving objects.) 2169 // Global (weak) JNI handles 2170 JNIHandles::weak_oops_do(&oop_closure); 2171 2172 HeapMonitoring::do_weak_oops(&oop_closure); 2173 2174 CodeBlobToOopClosure adjust_from_blobs(&oop_closure, CodeBlobToOopClosure::FixRelocations); 2175 CodeCache::blobs_do(&adjust_from_blobs); 2176 AOTLoader::oops_do(&oop_closure); 2177 StringTable::oops_do(&oop_closure); 2178 ref_processor()->weak_oops_do(&oop_closure); 2179 // Roots were visited so references into the young gen in roots 2180 // may have been scanned. Process them also. 2181 // Should the reference processor have a span that excludes 2182 // young gen objects? 2183 PSScavenge::reference_processor()->weak_oops_do(&oop_closure); 2184 } 2185 2186 // Helper class to print 8 region numbers per line and then print the total at the end. 2187 class FillableRegionLogger : public StackObj { 2188 private: 2189 Log(gc, compaction) log; 2190 static const int LineLength = 8; 2191 size_t _regions[LineLength]; 2192 int _next_index; 2193 bool _enabled; |