src/share/vm/oops/valueArrayKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File valhalla Sdiff src/share/vm/oops

src/share/vm/oops/valueArrayKlass.cpp

Print this page




  52 // Allocation...
  53 
  54 ValueArrayKlass::ValueArrayKlass(Klass* element_klass, Symbol* name) : ArrayKlass(name) {
  55   assert(element_klass->is_value(), "Expected Value");
  56 
  57   set_element_klass(ValueKlass::cast(element_klass));
  58   set_class_loader_data(element_klass->class_loader_data());
  59   set_layout_helper(array_layout_helper(ValueKlass::cast(element_klass)));
  60 
  61   assert(is_array_klass(), "sanity");
  62   assert(is_valueArray_klass(), "sanity");
  63 
  64   CMH("tweak name symbol refcnt ?")
  65 #ifndef PRODUCT
  66   if (PrintValueArrayLayout) {
  67     print();
  68   }
  69 #endif
  70 }
  71 
  72 void ValueArrayKlass::set_element_klass(ValueKlass* k) {




  73   _element_klass = k;
  74 }
  75 
  76 ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass*  element_klass,
  77                                                  Symbol* name,
  78                                                  TRAPS) {
  79   assert(ValueArrayFlatten, "Flatten array not allowed");
  80   assert(ValueKlass::cast(element_klass)->is_atomic() || (!ValueArrayAtomicAccess), "Atomic by-default");
  81 
  82   ClassLoaderData* loader_data = element_klass->class_loader_data();
  83   int size = ArrayKlass::static_size(ValueArrayKlass::header_size());
  84   ValueArrayKlass* vak = new (loader_data, size, THREAD) ValueArrayKlass(element_klass, name);
  85   if (vak == NULL) {
  86     return NULL;
  87   }
  88   loader_data->add_class(vak);
  89   complete_create_array_klass(vak, vak->super(), vak->module(), CHECK_NULL);
  90   return vak;
  91 }
  92 
  93 ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass* element_klass, TRAPS) {
  94   Symbol* name = ArrayKlass::create_element_klass_array_name(element_klass, CHECK_NULL);
  95   return allocate_klass(element_klass, name, THREAD);
  96 }
  97 
  98 void ValueArrayKlass::initialize(TRAPS) {
  99   element_klass()->initialize(THREAD);




  52 // Allocation...
  53 
  54 ValueArrayKlass::ValueArrayKlass(Klass* element_klass, Symbol* name) : ArrayKlass(name) {
  55   assert(element_klass->is_value(), "Expected Value");
  56 
  57   set_element_klass(ValueKlass::cast(element_klass));
  58   set_class_loader_data(element_klass->class_loader_data());
  59   set_layout_helper(array_layout_helper(ValueKlass::cast(element_klass)));
  60 
  61   assert(is_array_klass(), "sanity");
  62   assert(is_valueArray_klass(), "sanity");
  63 
  64   CMH("tweak name symbol refcnt ?")
  65 #ifndef PRODUCT
  66   if (PrintValueArrayLayout) {
  67     print();
  68   }
  69 #endif
  70 }
  71 
  72 ValueKlass* ValueArrayKlass::element_klass() const {
  73   return ValueKlass::cast(_element_klass);
  74 }
  75 
  76 void ValueArrayKlass::set_element_klass(Klass* k) {
  77   _element_klass = k;
  78 }
  79 
  80 ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass*  element_klass,
  81                                                  Symbol* name,
  82                                                  TRAPS) {
  83   assert(ValueArrayFlatten, "Flatten array required");
  84   assert(ValueKlass::cast(element_klass)->is_atomic() || (!ValueArrayAtomicAccess), "Atomic by-default");
  85 
  86   ClassLoaderData* loader_data = element_klass->class_loader_data();
  87   int size = ArrayKlass::static_size(ValueArrayKlass::header_size());
  88   ValueArrayKlass* vak = new (loader_data, size, THREAD) ValueArrayKlass(element_klass, name);
  89   if (vak == NULL) {
  90     return NULL;
  91   }
  92   loader_data->add_class(vak);
  93   complete_create_array_klass(vak, vak->super(), vak->module(), CHECK_NULL);
  94   return vak;
  95 }
  96 
  97 ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass* element_klass, TRAPS) {
  98   Symbol* name = ArrayKlass::create_element_klass_array_name(element_klass, CHECK_NULL);
  99   return allocate_klass(element_klass, name, THREAD);
 100 }
 101 
 102 void ValueArrayKlass::initialize(TRAPS) {
 103   element_klass()->initialize(THREAD);


src/share/vm/oops/valueArrayKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File