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

src/share/vm/oops/valueArrayKlass.cpp

Print this page

        

*** 69,87 **** print(); } #endif } ! void ValueArrayKlass::set_element_klass(ValueKlass* k) { _element_klass = k; ! _element_value_store_size = k->raw_value_byte_size(); } ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass* element_klass, Symbol* name, TRAPS) { ! assert(ValueArrayFlatten, "Flatten array not allowed"); assert(ValueKlass::cast(element_klass)->is_atomic() || (!ValueArrayAtomicAccess), "Atomic by-default"); ClassLoaderData* loader_data = element_klass->class_loader_data(); int size = ArrayKlass::static_size(ValueArrayKlass::header_size()); ValueArrayKlass* vak = new (loader_data, size, THREAD) ValueArrayKlass(element_klass, name); --- 69,87 ---- print(); } #endif } ! void ValueArrayKlass::set_element_klass(Klass* k) { _element_klass = k; ! _element_value_store_size = ((ValueKlass*)k)->raw_value_byte_size(); } ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass* element_klass, Symbol* name, TRAPS) { ! assert(ValueArrayFlatten, "Flatten array required"); assert(ValueKlass::cast(element_klass)->is_atomic() || (!ValueArrayAtomicAccess), "Atomic by-default"); ClassLoaderData* loader_data = element_klass->class_loader_data(); int size = ArrayKlass::static_size(ValueArrayKlass::header_size()); ValueArrayKlass* vak = new (loader_data, size, THREAD) ValueArrayKlass(element_klass, name);
*** 195,205 **** address dst = (address) da->value_at_addr(dst_pos, layout_helper()); if (contains_oops()) { int elem_incr = 1 << log2_element_size(); address src_end = src + (length << log2_element_size()); while (src < src_end) { ! element_klass()->value_store(src, dst, element_value_store_size(), true, false); src += elem_incr; dst += elem_incr; } } else { // we are basically a type array...don't bother limiting element copy --- 195,205 ---- address dst = (address) da->value_at_addr(dst_pos, layout_helper()); if (contains_oops()) { int elem_incr = 1 << log2_element_size(); address src_end = src + (length << log2_element_size()); while (src < src_end) { ! ((ValueKlass*)element_klass())->value_store(src, dst, element_value_store_size(), true, false); src += elem_incr; dst += elem_incr; } } else { // we are basically a type array...don't bother limiting element copy
*** 292,302 **** #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++) { int off = (address) va->value_at_addr(index, layout_helper()) - (address) obj; st->print_cr(" - Index %3d offset %3d: ", index, off); oop obj = (oop) ((address)va->value_at_addr(index, layout_helper()) - vk->first_field_offset()); --- 292,302 ---- #ifndef PRODUCT void ValueArrayKlass::oop_print_on(oop obj, outputStream* st) { ArrayKlass::oop_print_on(obj, st); valueArrayOop va = valueArrayOop(obj); ! ValueKlass* vk = (ValueKlass*)element_klass(); int print_len = MIN2((intx) va->length(), MaxElementPrintSize); for(int index = 0; index < print_len; index++) { int off = (address) va->value_at_addr(index, layout_helper()) - (address) obj; st->print_cr(" - Index %3d offset %3d: ", index, off); oop obj = (oop) ((address)va->value_at_addr(index, layout_helper()) - vk->first_field_offset());
*** 335,345 **** void ValueArrayKlass::oop_verify_on(oop obj, outputStream* st) { ArrayKlass::oop_verify_on(obj, st); guarantee(obj->is_valueArray(), "must be valueArray"); ! if (element_klass()->contains_oops()) { valueArrayOop va = valueArrayOop(obj); NoHeaderExtendedOopClosure wrapClosure(&VerifyOopClosure::verify_oop); va->oop_iterate(&wrapClosure); } } --- 335,345 ---- void ValueArrayKlass::oop_verify_on(oop obj, outputStream* st) { ArrayKlass::oop_verify_on(obj, st); guarantee(obj->is_valueArray(), "must be valueArray"); ! if (((ValueKlass*)element_klass())->contains_oops()) { valueArrayOop va = valueArrayOop(obj); NoHeaderExtendedOopClosure wrapClosure(&VerifyOopClosure::verify_oop); va->oop_iterate(&wrapClosure); } }
src/share/vm/oops/valueArrayKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File