< prev index next >

src/share/vm/oops/typeArrayKlass.cpp

Print this page
rev 11777 : [mq]: gcinterface.patch


  87 }
  88 
  89 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name) {
  90   set_layout_helper(array_layout_helper(type));
  91   assert(is_array_klass(), "sanity");
  92   assert(is_typeArray_klass(), "sanity");
  93 
  94   set_max_length(arrayOopDesc::max_array_length(type));
  95   assert(size() >= TypeArrayKlass::header_size(), "bad size");
  96 
  97   set_class_loader_data(ClassLoaderData::the_null_class_loader_data());
  98 }
  99 
 100 typeArrayOop TypeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) {
 101   assert(log2_element_size() >= 0, "bad scale");
 102   if (length >= 0) {
 103     if (length <= max_length()) {
 104       size_t size = typeArrayOopDesc::object_size(layout_helper(), length);
 105       KlassHandle h_k(THREAD, this);
 106       typeArrayOop t;
 107       CollectedHeap* ch = Universe::heap();
 108       if (do_zero) {
 109         t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL);
 110       } else {
 111         t = (typeArrayOop)CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL);
 112       }
 113       return t;
 114     } else {
 115       report_java_out_of_memory("Requested array size exceeds VM limit");
 116       JvmtiExport::post_array_size_exhausted();
 117       THROW_OOP_0(Universe::out_of_memory_error_array_size());
 118     }
 119   } else {
 120     THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
 121   }
 122 }
 123 
 124 oop TypeArrayKlass::multi_allocate(int rank, jint* last_size, TRAPS) {
 125   // For typeArrays this is only called for the last dimension
 126   assert(rank == 1, "just checking");
 127   int length = *last_size;




  87 }
  88 
  89 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name) {
  90   set_layout_helper(array_layout_helper(type));
  91   assert(is_array_klass(), "sanity");
  92   assert(is_typeArray_klass(), "sanity");
  93 
  94   set_max_length(arrayOopDesc::max_array_length(type));
  95   assert(size() >= TypeArrayKlass::header_size(), "bad size");
  96 
  97   set_class_loader_data(ClassLoaderData::the_null_class_loader_data());
  98 }
  99 
 100 typeArrayOop TypeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) {
 101   assert(log2_element_size() >= 0, "bad scale");
 102   if (length >= 0) {
 103     if (length <= max_length()) {
 104       size_t size = typeArrayOopDesc::object_size(layout_helper(), length);
 105       KlassHandle h_k(THREAD, this);
 106       typeArrayOop t;
 107       CollectedHeap* ch = GC::gc()->heap();
 108       if (do_zero) {
 109         t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL);
 110       } else {
 111         t = (typeArrayOop)CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL);
 112       }
 113       return t;
 114     } else {
 115       report_java_out_of_memory("Requested array size exceeds VM limit");
 116       JvmtiExport::post_array_size_exhausted();
 117       THROW_OOP_0(Universe::out_of_memory_error_array_size());
 118     }
 119   } else {
 120     THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
 121   }
 122 }
 123 
 124 oop TypeArrayKlass::multi_allocate(int rank, jint* last_size, TRAPS) {
 125   // For typeArrays this is only called for the last dimension
 126   assert(rank == 1, "just checking");
 127   int length = *last_size;


< prev index next >