< prev index next >

src/hotspot/share/oops/typeArrayOop.hpp

Print this page

116   // Returns the number of words necessary to hold an array of "len"
117   // elements each of the given "byte_size".
118  private:
119   static size_t object_size(int lh, int length) {
120     int instance_header_size = Klass::layout_helper_header_size(lh);
121     int element_shift = Klass::layout_helper_log2_element_size(lh);
122     DEBUG_ONLY(BasicType etype = Klass::layout_helper_element_type(lh));
123     assert(length <= arrayOopDesc::max_array_length(etype), "no overflow");
124 
125     julong size_in_bytes = (juint)length;
126     size_in_bytes <<= element_shift;
127     size_in_bytes += instance_header_size;
128     julong size_in_words = ((size_in_bytes + (HeapWordSize-1)) >> LogHeapWordSize);
129     assert(size_in_words <= (julong)max_jint, "no overflow");
130 
131     return align_object_size((size_t)size_in_words);
132   }
133 
134  public:
135   inline size_t object_size(const TypeArrayKlass* tk) const;

136 };
137 
138 // See similar requirement for oopDesc.
139 static_assert(std::is_trivially_default_constructible<typeArrayOopDesc>::value, "required");
140 
141 #endif // SHARE_OOPS_TYPEARRAYOOP_HPP

116   // Returns the number of words necessary to hold an array of "len"
117   // elements each of the given "byte_size".
118  private:
119   static size_t object_size(int lh, int length) {
120     int instance_header_size = Klass::layout_helper_header_size(lh);
121     int element_shift = Klass::layout_helper_log2_element_size(lh);
122     DEBUG_ONLY(BasicType etype = Klass::layout_helper_element_type(lh));
123     assert(length <= arrayOopDesc::max_array_length(etype), "no overflow");
124 
125     julong size_in_bytes = (juint)length;
126     size_in_bytes <<= element_shift;
127     size_in_bytes += instance_header_size;
128     julong size_in_words = ((size_in_bytes + (HeapWordSize-1)) >> LogHeapWordSize);
129     assert(size_in_words <= (julong)max_jint, "no overflow");
130 
131     return align_object_size((size_t)size_in_words);
132   }
133 
134  public:
135   inline size_t object_size(const TypeArrayKlass* tk) const;
136   inline size_t object_size(const TypeArrayKlass* tk, int length) const;
137 };
138 
139 // See similar requirement for oopDesc.
140 static_assert(std::is_trivially_default_constructible<typeArrayOopDesc>::value, "required");
141 
142 #endif // SHARE_OOPS_TYPEARRAYOOP_HPP
< prev index next >