< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page




 167     else if (is_class_loader(class_name, parser)) {
 168       // class loader
 169       ik = new (loader_data, size, THREAD) InstanceClassLoaderKlass(parser);
 170     }
 171     else {
 172       // normal
 173       ik = new (loader_data, size, THREAD) InstanceKlass(parser, InstanceKlass::_misc_kind_other);
 174     }
 175   }
 176   else {
 177     // reference
 178     ik = new (loader_data, size, THREAD) InstanceRefKlass(parser);
 179   }
 180 
 181   // Check for pending exception before adding to the loader data and incrementing
 182   // class count.  Can get OOM here.
 183   if (HAS_PENDING_EXCEPTION) {
 184     return NULL;
 185   }
 186 
 187   assert(ik != NULL, "invariant");
 188 
 189   const bool publicize = !parser.is_internal();
 190 
 191   // Add all classes to our internal class loader list here,
 192   // including classes in the bootstrap (NULL) class loader.
 193   loader_data->add_class(ik, publicize);
 194   return ik;
 195 }
 196 
 197 
 198 // copy method ordering from resource area to Metaspace
 199 void InstanceKlass::copy_method_ordering(const intArray* m, TRAPS) {
 200   if (m != NULL) {
 201     // allocate a new array and copy contents (memcpy?)
 202     _method_ordering = MetadataFactory::new_array<int>(class_loader_data(), m->length(), CHECK);
 203     for (int i = 0; i < m->length(); i++) {
 204       _method_ordering->at_put(i, m->at(i));
 205     }
 206   } else {
 207     _method_ordering = Universe::the_empty_int_array();
 208   }
 209 }
 210 
 211 // create a new array of vtable_indices for default methods
 212 Array<int>* InstanceKlass::create_new_default_vtable_indices(int len, TRAPS) {
 213   Array<int>* vtable_indices = MetadataFactory::new_array<int>(class_loader_data(), len, CHECK_NULL);




 167     else if (is_class_loader(class_name, parser)) {
 168       // class loader
 169       ik = new (loader_data, size, THREAD) InstanceClassLoaderKlass(parser);
 170     }
 171     else {
 172       // normal
 173       ik = new (loader_data, size, THREAD) InstanceKlass(parser, InstanceKlass::_misc_kind_other);
 174     }
 175   }
 176   else {
 177     // reference
 178     ik = new (loader_data, size, THREAD) InstanceRefKlass(parser);
 179   }
 180 
 181   // Check for pending exception before adding to the loader data and incrementing
 182   // class count.  Can get OOM here.
 183   if (HAS_PENDING_EXCEPTION) {
 184     return NULL;
 185   }
 186 







 187   return ik;
 188 }
 189 
 190 
 191 // copy method ordering from resource area to Metaspace
 192 void InstanceKlass::copy_method_ordering(const intArray* m, TRAPS) {
 193   if (m != NULL) {
 194     // allocate a new array and copy contents (memcpy?)
 195     _method_ordering = MetadataFactory::new_array<int>(class_loader_data(), m->length(), CHECK);
 196     for (int i = 0; i < m->length(); i++) {
 197       _method_ordering->at_put(i, m->at(i));
 198     }
 199   } else {
 200     _method_ordering = Universe::the_empty_int_array();
 201   }
 202 }
 203 
 204 // create a new array of vtable_indices for default methods
 205 Array<int>* InstanceKlass::create_new_default_vtable_indices(int len, TRAPS) {
 206   Array<int>* vtable_indices = MetadataFactory::new_array<int>(class_loader_data(), len, CHECK_NULL);


< prev index next >