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