< prev index next >
src/share/vm/memory/universe.cpp
Print this page
@@ -41,10 +41,11 @@
#include "gc/shared/space.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
#include "memory/filemap.hpp"
#include "memory/metadataFactory.hpp"
+#include "memory/metaspaceClosure.hpp"
#include "memory/metaspaceShared.hpp"
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
#include "memory/universe.inline.hpp"
@@ -217,10 +218,41 @@
f->do_oop((oop*)&_allocation_context_notification_obj);
f->do_oop((oop*)&_reference_pending_list);
debug_only(f->do_oop((oop*)&_fullgc_alot_dummy_array);)
}
+void LatestMethodCache::metaspace_pointers_do(MetaspaceClosure* it) {
+ it->push(&_klass);
+}
+
+void Universe::metaspace_pointers_do(MetaspaceClosure* it) {
+ it->push(&_boolArrayKlassObj);
+ it->push(&_byteArrayKlassObj);
+ it->push(&_charArrayKlassObj);
+ it->push(&_intArrayKlassObj);
+ it->push(&_shortArrayKlassObj);
+ it->push(&_longArrayKlassObj);
+ it->push(&_singleArrayKlassObj);
+ it->push(&_doubleArrayKlassObj);
+ for (int i = 0; i < T_VOID+1; i++) {
+ it->push(&_typeArrayKlassObjs[i]);
+ }
+ it->push(&_objectArrayKlassObj);
+
+ it->push(&_the_empty_int_array);
+ it->push(&_the_empty_short_array);
+ it->push(&_the_empty_klass_array);
+ it->push(&_the_empty_method_array);
+ it->push(&_the_array_interfaces_array);
+
+ _finalizer_register_cache->metaspace_pointers_do(it);
+ _loader_addClass_cache->metaspace_pointers_do(it);
+ _pd_implies_cache->metaspace_pointers_do(it);
+ _throw_illegal_access_error_cache->metaspace_pointers_do(it);
+ _do_stack_walk_cache->metaspace_pointers_do(it);
+}
+
// Serialize metadata in and out of CDS archive, not oops.
void Universe::serialize(SerializeClosure* f, bool do_all) {
f->do_ptr((void**)&_boolArrayKlassObj);
f->do_ptr((void**)&_byteArrayKlassObj);
< prev index next >