< prev index next >

src/share/vm/oops/valueArrayKlass.cpp

Print this page

        

*** 87,99 **** Symbol* name = ArrayKlass::create_element_klass_array_name(element_klass, CHECK_NULL); return allocate_klass(element_klass, name, THREAD); } // Oops allocation... ! valueArrayOop ValueArrayKlass::allocate_array(int length, ! bool do_zero, ! TRAPS) { CMH("this is virtually identical in all arrayKlasses, refactor") if (length < 0) { THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); } if (length > max_elements()) { --- 87,97 ---- Symbol* name = ArrayKlass::create_element_klass_array_name(element_klass, CHECK_NULL); return allocate_klass(element_klass, name, THREAD); } // Oops allocation... ! oop ValueArrayKlass::allocate(int length, bool do_zero, TRAPS) { CMH("this is virtually identical in all arrayKlasses, refactor") if (length < 0) { THROW_0(vmSymbols::java_lang_NegativeArraySizeException()); } if (length > max_elements()) {
*** 102,127 **** THROW_OOP_0(Universe::out_of_memory_error_array_size()); } size_t size = valueArrayOopDesc::object_size(layout_helper(), length); KlassHandle h_k(THREAD, this); - valueArrayOop array; - CollectedHeap* ch = Universe::heap(); if (do_zero) { ! array = (valueArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL); } else { ! array = (valueArrayOop)CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL); } - return array; } oop ValueArrayKlass::multi_allocate(int rank, jint* last_size, TRAPS) { // For valueArrays this is only called for the last dimension assert(rank == 1, "just checking"); int length = *last_size; ! return allocate_array(length, true, THREAD); } jint ValueArrayKlass::array_layout_helper(ValueKlass* vk) { BasicType etype = T_VALUETYPE; int atag = _lh_array_tag_type_value; --- 100,122 ---- THROW_OOP_0(Universe::out_of_memory_error_array_size()); } size_t size = valueArrayOopDesc::object_size(layout_helper(), length); KlassHandle h_k(THREAD, this); if (do_zero) { ! return CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL); } else { ! return CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL); } } oop ValueArrayKlass::multi_allocate(int rank, jint* last_size, TRAPS) { // For valueArrays this is only called for the last dimension assert(rank == 1, "just checking"); int length = *last_size; ! return allocate(length, true, THREAD); } jint ValueArrayKlass::array_layout_helper(ValueKlass* vk) { BasicType etype = T_VALUETYPE; int atag = _lh_array_tag_type_value;
*** 130,140 **** int lh = (atag << _lh_array_tag_shift) | (1 << _lh_valuetype_bit) | (hsize << _lh_header_size_shift) | ((int)etype << _lh_element_type_shift) ! | (esize); #ifdef DEBUG assert(lh < (int)_lh_neutral_value, "must look like an array layout"); assert(layout_helper_is_array(lh), "correct kind"); assert(layout_helper_is_valueArray(lh), "correct kind"); --- 125,135 ---- int lh = (atag << _lh_array_tag_shift) | (1 << _lh_valuetype_bit) | (hsize << _lh_header_size_shift) | ((int)etype << _lh_element_type_shift) ! | ((esize) << _lh_log2_element_size_shift); #ifdef DEBUG assert(lh < (int)_lh_neutral_value, "must look like an array layout"); assert(layout_helper_is_array(lh), "correct kind"); assert(layout_helper_is_valueArray(lh), "correct kind");
*** 258,272 **** #ifndef PRODUCT void ValueArrayKlass::oop_print_on(oop obj, outputStream* st) { ArrayKlass::oop_print_on(obj, st); valueArrayOop va = valueArrayOop(obj); int print_len = MIN2((intx) va->length(), MaxElementPrintSize); for(int index = 0; index < print_len; index++) { ! st->print(" - %3d : ", index); ! CMH("CMH: helper method for valueOop/valorind printing") ! st->print(" CMH: helper method for valueOop/valorind printing"); st->cr(); } int remaining = va->length() - print_len; if (remaining > 0) { st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining); --- 253,269 ---- #ifndef PRODUCT void ValueArrayKlass::oop_print_on(oop obj, outputStream* st) { ArrayKlass::oop_print_on(obj, st); valueArrayOop va = valueArrayOop(obj); + ValueKlass* vk = element_klass(); int print_len = MIN2((intx) va->length(), MaxElementPrintSize); for(int index = 0; index < print_len; index++) { ! st->print_cr(" - %d : ", index); ! oop obj = (oop) ((uintptr_t)va->value_at_addr(index, layout_helper()) - vk->first_field_offset()); ! FieldPrinter print_field(st, obj); ! vk->do_nonstatic_fields(&print_field); st->cr(); } int remaining = va->length() - print_len; if (remaining > 0) { st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining);
< prev index next >