equal
deleted
inserted
replaced
29 #include "classfile/vmSymbols.hpp" |
29 #include "classfile/vmSymbols.hpp" |
30 #include "gc/shared/collectedHeap.inline.hpp" |
30 #include "gc/shared/collectedHeap.inline.hpp" |
31 #include "logging/log.hpp" |
31 #include "logging/log.hpp" |
32 #include "memory/heapInspection.hpp" |
32 #include "memory/heapInspection.hpp" |
33 #include "memory/metadataFactory.hpp" |
33 #include "memory/metadataFactory.hpp" |
|
34 #include "memory/metaspaceClosure.hpp" |
|
35 #include "memory/metaspaceShared.hpp" |
34 #include "memory/oopFactory.hpp" |
36 #include "memory/oopFactory.hpp" |
35 #include "memory/resourceArea.hpp" |
37 #include "memory/resourceArea.hpp" |
36 #include "oops/instanceKlass.hpp" |
38 #include "oops/instanceKlass.hpp" |
37 #include "oops/klass.inline.hpp" |
39 #include "oops/klass.inline.hpp" |
38 #include "oops/oop.inline.hpp" |
40 #include "oops/oop.inline.hpp" |
160 ShouldNotReachHere(); |
162 ShouldNotReachHere(); |
161 return NULL; |
163 return NULL; |
162 } |
164 } |
163 |
165 |
164 void* Klass::operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw() { |
166 void* Klass::operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw() { |
165 return Metaspace::allocate(loader_data, word_size, /*read_only*/false, |
167 return Metaspace::allocate(loader_data, word_size, MetaspaceObj::ClassType, THREAD); |
166 MetaspaceObj::ClassType, THREAD); |
|
167 } |
168 } |
168 |
169 |
169 // "Normal" instantiation is preceeded by a MetaspaceObj allocation |
170 // "Normal" instantiation is preceeded by a MetaspaceObj allocation |
170 // which zeros out memory - calloc equivalent. |
171 // which zeros out memory - calloc equivalent. |
171 // The constructor is also used from CppVtableCloner, |
172 // The constructor is also used from CppVtableCloner, |
483 |
484 |
484 void Klass::oops_do(OopClosure* cl) { |
485 void Klass::oops_do(OopClosure* cl) { |
485 cl->do_oop(&_java_mirror); |
486 cl->do_oop(&_java_mirror); |
486 } |
487 } |
487 |
488 |
|
489 void Klass::metaspace_pointers_do(MetaspaceClosure* it) { |
|
490 if (log_is_enabled(Trace, cds)) { |
|
491 ResourceMark rm; |
|
492 log_trace(cds)("Iter(Klass): %p (%s)", this, external_name()); |
|
493 } |
|
494 |
|
495 it->push(&_name); |
|
496 it->push(&_secondary_super_cache); |
|
497 it->push(&_secondary_supers); |
|
498 for (int i = 0; i < _primary_super_limit; i++) { |
|
499 it->push(&_primary_supers[i]); |
|
500 } |
|
501 it->push(&_super); |
|
502 it->push(&_subklass); |
|
503 it->push(&_next_sibling); |
|
504 it->push(&_next_link); |
|
505 |
|
506 vtableEntry* vt = start_of_vtable(); |
|
507 for (int i=0; i<vtable_length(); i++) { |
|
508 it->push(vt[i].method_addr()); |
|
509 } |
|
510 } |
|
511 |
488 void Klass::remove_unshareable_info() { |
512 void Klass::remove_unshareable_info() { |
489 assert (DumpSharedSpaces, "only called for DumpSharedSpaces"); |
513 assert (DumpSharedSpaces, "only called for DumpSharedSpaces"); |
490 TRACE_REMOVE_ID(this); |
514 TRACE_REMOVE_ID(this); |
491 |
515 |
492 set_subklass(NULL); |
516 set_subklass(NULL); |