< prev index next > src/hotspot/share/oops/objArrayKlass.cpp
Print this page
set_layout_helper(array_layout_helper(T_OBJECT));
assert(is_array_klass(), "sanity");
assert(is_objArray_klass(), "sanity");
}
! size_t ObjArrayKlass::oop_size(oop obj) const {
// In this assert, we cannot safely access the Klass* with compact headers,
// because size_given_klass() calls oop_size() on objects that might be
// concurrently forwarded, which would overwrite the Klass*.
assert(UseCompactObjectHeaders || obj->is_objArray(), "must be object array");
! return objArrayOop(obj)->object_size();
}
objArrayOop ObjArrayKlass::allocate(int length, TRAPS) {
check_array_allocation_length(length, arrayOopDesc::max_array_length(T_OBJECT), CHECK_NULL);
size_t size = objArrayOopDesc::object_size(length);
set_layout_helper(array_layout_helper(T_OBJECT));
assert(is_array_klass(), "sanity");
assert(is_objArray_klass(), "sanity");
}
! size_t ObjArrayKlass::oop_size(oop obj, markWord mark) const {
// In this assert, we cannot safely access the Klass* with compact headers,
// because size_given_klass() calls oop_size() on objects that might be
// concurrently forwarded, which would overwrite the Klass*.
assert(UseCompactObjectHeaders || obj->is_objArray(), "must be object array");
! int length = LP64_ONLY(UseCompactObjectHeaders ? mark.array_length() :) objArrayOop(obj)->length();
+ return objArrayOop(obj)->object_size(length);
}
objArrayOop ObjArrayKlass::allocate(int length, TRAPS) {
check_array_allocation_length(length, arrayOopDesc::max_array_length(T_OBJECT), CHECK_NULL);
size_t size = objArrayOopDesc::object_size(length);
< prev index next >