hotspot/src/share/vm/oops/klass.cpp
changeset 46746 ea379ebb9447
parent 46413 b0f67ec8f6be
child 46773 fb17cc9a6847
equal deleted inserted replaced
46745:f7b9bb98bb72 46746:ea379ebb9447
    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);