144
145 // oops, conjoint, atomic on each oop
146 static void conjoint_oops_atomic(const oop* from, oop* to, size_t count) {
147 assert_params_ok(from, to, BytesPerHeapOop);
148 pd_conjoint_oops_atomic(from, to, count);
149 }
150
151 // overloaded for UseCompressedOops
152 static void conjoint_oops_atomic(const narrowOop* from, narrowOop* to, size_t count) {
153 assert(sizeof(narrowOop) == sizeof(jint), "this cast is wrong");
154 assert_params_ok(from, to, BytesPerInt);
155 pd_conjoint_jints_atomic((const jint*)from, (jint*)to, count);
156 }
157
158 // Copy a span of memory. If the span is an integral number of aligned
159 // longs, words, or ints, copy those units atomically.
160 // The largest atomic transfer unit is 8 bytes, or the largest power
161 // of two which divides all of from, to, and size, whichever is smaller.
162 static void conjoint_memory_atomic(const void* from, void* to, size_t size);
163
164 // bytes, conjoint array, atomic on each byte (not that it matters)
165 static void arrayof_conjoint_jbytes(const HeapWord* from, HeapWord* to, size_t count) {
166 pd_arrayof_conjoint_bytes(from, to, count);
167 }
168
169 // jshorts, conjoint array, atomic on each jshort
170 static void arrayof_conjoint_jshorts(const HeapWord* from, HeapWord* to, size_t count) {
171 assert_params_ok(from, to, BytesPerShort);
172 pd_arrayof_conjoint_jshorts(from, to, count);
173 }
174
175 // jints, conjoint array, atomic on each jint
176 static void arrayof_conjoint_jints(const HeapWord* from, HeapWord* to, size_t count) {
177 assert_params_ok(from, to, BytesPerInt);
178 pd_arrayof_conjoint_jints(from, to, count);
179 }
180
181 // jlongs, conjoint array, atomic on each jlong
182 static void arrayof_conjoint_jlongs(const HeapWord* from, HeapWord* to, size_t count) {
183 assert_params_ok(from, to, BytesPerLong);
|
144
145 // oops, conjoint, atomic on each oop
146 static void conjoint_oops_atomic(const oop* from, oop* to, size_t count) {
147 assert_params_ok(from, to, BytesPerHeapOop);
148 pd_conjoint_oops_atomic(from, to, count);
149 }
150
151 // overloaded for UseCompressedOops
152 static void conjoint_oops_atomic(const narrowOop* from, narrowOop* to, size_t count) {
153 assert(sizeof(narrowOop) == sizeof(jint), "this cast is wrong");
154 assert_params_ok(from, to, BytesPerInt);
155 pd_conjoint_jints_atomic((const jint*)from, (jint*)to, count);
156 }
157
158 // Copy a span of memory. If the span is an integral number of aligned
159 // longs, words, or ints, copy those units atomically.
160 // The largest atomic transfer unit is 8 bytes, or the largest power
161 // of two which divides all of from, to, and size, whichever is smaller.
162 static void conjoint_memory_atomic(const void* from, void* to, size_t size);
163
164 static void copy_value_content(const void* from, void* to, size_t size);
165
166 // bytes, conjoint array, atomic on each byte (not that it matters)
167 static void arrayof_conjoint_jbytes(const HeapWord* from, HeapWord* to, size_t count) {
168 pd_arrayof_conjoint_bytes(from, to, count);
169 }
170
171 // jshorts, conjoint array, atomic on each jshort
172 static void arrayof_conjoint_jshorts(const HeapWord* from, HeapWord* to, size_t count) {
173 assert_params_ok(from, to, BytesPerShort);
174 pd_arrayof_conjoint_jshorts(from, to, count);
175 }
176
177 // jints, conjoint array, atomic on each jint
178 static void arrayof_conjoint_jints(const HeapWord* from, HeapWord* to, size_t count) {
179 assert_params_ok(from, to, BytesPerInt);
180 pd_arrayof_conjoint_jints(from, to, count);
181 }
182
183 // jlongs, conjoint array, atomic on each jlong
184 static void arrayof_conjoint_jlongs(const HeapWord* from, HeapWord* to, size_t count) {
185 assert_params_ok(from, to, BytesPerLong);
|