95 oop_store(obj_at_addr<oop>(index), value);
96 }
97 }
98
99 oop atomic_compare_exchange_oop(int index, oop exchange_value, oop compare_value);
100
101 // Sizing
102 static int header_size() { return arrayOopDesc::header_size(T_OBJECT); }
103 int object_size() { return object_size(length()); }
104
105 static int object_size(int length) {
106 // This returns the object size in HeapWords.
107 uint asz = array_size(length);
108 uint osz = align_object_size(header_size() + asz);
109 assert(osz >= asz, "no overflow");
110 assert((int)osz > 0, "no overflow");
111 return (int)osz;
112 }
113
114 // special iterators for index ranges, returns size of object
115 #define ObjArrayOop_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
116 int oop_iterate_range(OopClosureType* blk, int start, int end);
117
118 ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayOop_OOP_ITERATE_DECL)
119 ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayOop_OOP_ITERATE_DECL)
120 };
121
122 #endif // SHARE_VM_OOPS_OBJARRAYOOP_HPP
|
95 oop_store(obj_at_addr<oop>(index), value);
96 }
97 }
98
99 oop atomic_compare_exchange_oop(int index, oop exchange_value, oop compare_value);
100
101 // Sizing
102 static int header_size() { return arrayOopDesc::header_size(T_OBJECT); }
103 int object_size() { return object_size(length()); }
104
105 static int object_size(int length) {
106 // This returns the object size in HeapWords.
107 uint asz = array_size(length);
108 uint osz = align_object_size(header_size() + asz);
109 assert(osz >= asz, "no overflow");
110 assert((int)osz > 0, "no overflow");
111 return (int)osz;
112 }
113
114 // special iterators for index ranges, returns size of object
115 template <bool nv, typename OopClosureType>
116 int oop_iterate_range_t(OopClosureType* blk, int start, int end);
117 };
118
119 #endif // SHARE_VM_OOPS_OBJARRAYOOP_HPP
|