src/share/vm/oops/typeArrayKlass.cpp

Print this page
rev 6796 : [mq]: templateOopIterate
rev 6799 : [mq]: latestChanges


  67   // Add all classes to our internal class loader list here,
  68   // including classes in the bootstrap (NULL) class loader.
  69   // GC walks these as strong roots.
  70   null_loader_data->add_class(ak);
  71 
  72   // Call complete_create_array_klass after all instance variables have been initialized.
  73   complete_create_array_klass(ak, ak->super(), CHECK_NULL);
  74 
  75   return ak;
  76 }
  77 
  78 TypeArrayKlass* TypeArrayKlass::allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS) {
  79   assert(TypeArrayKlass::header_size() <= InstanceKlass::header_size(),
  80       "array klasses must be same size as InstanceKlass");
  81 
  82   int size = ArrayKlass::static_size(TypeArrayKlass::header_size());
  83 
  84   return new (loader_data, size, THREAD) TypeArrayKlass(type, name);
  85 }
  86 
  87 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name) {
  88   set_layout_helper(array_layout_helper(type));
  89   assert(oop_is_array(), "sanity");
  90   assert(oop_is_typeArray(), "sanity");
  91 
  92   set_max_length(arrayOopDesc::max_array_length(type));
  93   assert(size() >= TypeArrayKlass::header_size(), "bad size");
  94 
  95   set_class_loader_data(ClassLoaderData::the_null_class_loader_data());
  96 }
  97 
  98 typeArrayOop TypeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) {
  99   assert(log2_element_size() >= 0, "bad scale");
 100   if (length >= 0) {
 101     if (length <= max_length()) {
 102       size_t size = typeArrayOopDesc::object_size(layout_helper(), length);
 103       KlassHandle h_k(THREAD, this);
 104       typeArrayOop t;
 105       CollectedHeap* ch = Universe::heap();
 106       if (do_zero) {
 107         t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL);


 202   assert(obj->is_typeArray(),"must be a type array");
 203   typeArrayOop t = typeArrayOop(obj);
 204   return t->object_size();
 205 }
 206 
 207 void TypeArrayKlass::oop_follow_contents(oop obj) {
 208   assert(obj->is_typeArray(),"must be a type array");
 209   // Performance tweak: We skip iterating over the klass pointer since we
 210   // know that Universe::TypeArrayKlass never moves.
 211 }
 212 
 213 #if INCLUDE_ALL_GCS
 214 void TypeArrayKlass::oop_follow_contents(ParCompactionManager* cm, oop obj) {
 215   assert(obj->is_typeArray(),"must be a type array");
 216   // Performance tweak: We skip iterating over the klass pointer since we
 217   // know that Universe::TypeArrayKlass never moves.
 218 }
 219 #endif // INCLUDE_ALL_GCS
 220 
 221 int TypeArrayKlass::oop_adjust_pointers(oop obj) {
 222   assert(obj->is_typeArray(),"must be a type array");
 223   typeArrayOop t = typeArrayOop(obj);
 224   // Performance tweak: We skip iterating over the klass pointer since we
 225   // know that Universe::TypeArrayKlass never moves.
 226   return t->object_size();
 227 }
 228 
 229 int TypeArrayKlass::oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
 230   assert(obj->is_typeArray(),"must be a type array");
 231   typeArrayOop t = typeArrayOop(obj);
 232   // Performance tweak: We skip iterating over the klass pointer since we
 233   // know that Universe::TypeArrayKlass never moves.
 234   return t->object_size();
 235 }
 236 
 237 int TypeArrayKlass::oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
 238   assert(obj->is_typeArray(),"must be a type array");
 239   typeArrayOop t = typeArrayOop(obj);
 240   // Performance tweak: We skip iterating over the klass pointer since we
 241   // know that Universe::TypeArrayKlass never moves.
 242   return t->object_size();
 243 }
 244 
 245 #if INCLUDE_ALL_GCS
 246 void TypeArrayKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
 247   ShouldNotReachHere();
 248   assert(obj->is_typeArray(),"must be a type array");
 249 }
 250 
 251 int
 252 TypeArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
 253   assert(obj->is_typeArray(),"must be a type array");
 254   return typeArrayOop(obj)->object_size();
 255 }
 256 #endif // INCLUDE_ALL_GCS
 257 




  67   // Add all classes to our internal class loader list here,
  68   // including classes in the bootstrap (NULL) class loader.
  69   // GC walks these as strong roots.
  70   null_loader_data->add_class(ak);
  71 
  72   // Call complete_create_array_klass after all instance variables have been initialized.
  73   complete_create_array_klass(ak, ak->super(), CHECK_NULL);
  74 
  75   return ak;
  76 }
  77 
  78 TypeArrayKlass* TypeArrayKlass::allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS) {
  79   assert(TypeArrayKlass::header_size() <= InstanceKlass::header_size(),
  80       "array klasses must be same size as InstanceKlass");
  81 
  82   int size = ArrayKlass::static_size(TypeArrayKlass::header_size());
  83 
  84   return new (loader_data, size, THREAD) TypeArrayKlass(type, name);
  85 }
  86 
  87 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name, _type_array) {
  88   set_layout_helper(array_layout_helper(type));
  89   assert(oop_is_array(), "sanity");
  90   assert(oop_is_typeArray(), "sanity");
  91 
  92   set_max_length(arrayOopDesc::max_array_length(type));
  93   assert(size() >= TypeArrayKlass::header_size(), "bad size");
  94 
  95   set_class_loader_data(ClassLoaderData::the_null_class_loader_data());
  96 }
  97 
  98 typeArrayOop TypeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) {
  99   assert(log2_element_size() >= 0, "bad scale");
 100   if (length >= 0) {
 101     if (length <= max_length()) {
 102       size_t size = typeArrayOopDesc::object_size(layout_helper(), length);
 103       KlassHandle h_k(THREAD, this);
 104       typeArrayOop t;
 105       CollectedHeap* ch = Universe::heap();
 106       if (do_zero) {
 107         t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL);


 202   assert(obj->is_typeArray(),"must be a type array");
 203   typeArrayOop t = typeArrayOop(obj);
 204   return t->object_size();
 205 }
 206 
 207 void TypeArrayKlass::oop_follow_contents(oop obj) {
 208   assert(obj->is_typeArray(),"must be a type array");
 209   // Performance tweak: We skip iterating over the klass pointer since we
 210   // know that Universe::TypeArrayKlass never moves.
 211 }
 212 
 213 #if INCLUDE_ALL_GCS
 214 void TypeArrayKlass::oop_follow_contents(ParCompactionManager* cm, oop obj) {
 215   assert(obj->is_typeArray(),"must be a type array");
 216   // Performance tweak: We skip iterating over the klass pointer since we
 217   // know that Universe::TypeArrayKlass never moves.
 218 }
 219 #endif // INCLUDE_ALL_GCS
 220 
 221 int TypeArrayKlass::oop_adjust_pointers(oop obj) {
















 222   assert(obj->is_typeArray(),"must be a type array");
 223   typeArrayOop t = typeArrayOop(obj);
 224   // Performance tweak: We skip iterating over the klass pointer since we
 225   // know that Universe::TypeArrayKlass never moves.
 226   return t->object_size();
 227 }
 228 
 229 #if INCLUDE_ALL_GCS
 230 void TypeArrayKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
 231   ShouldNotReachHere();
 232   assert(obj->is_typeArray(),"must be a type array");
 233 }
 234 
 235 int
 236 TypeArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
 237   assert(obj->is_typeArray(),"must be a type array");
 238   return typeArrayOop(obj)->object_size();
 239 }
 240 #endif // INCLUDE_ALL_GCS
 241