|
63 | 63 | } |
64 | 64 |
|
65 | 65 | let offset = self.offset; |
66 | | - unsafe { |
67 | | - let ptr = self.object.get_raw::<T>(offset as usize) as *const T::Counterpart; |
68 | | - (&*ptr).load(Ordering::Acquire) |
69 | | - } |
| 66 | + unsafe { self.object.atomic_get::<T>(offset as usize) } |
70 | 67 | } |
71 | 68 |
|
72 | 69 | unsafe fn put(&self, value: T) { |
@@ -357,7 +354,7 @@ pub fn putReferenceVolatile( |
357 | 354 | offset: jlong, |
358 | 355 | value: Reference, // java.lang.Object |
359 | 356 | ) { |
360 | | - unsafe { object.atomic_store::<usize>(offset as usize, value.raw_tagged() as usize) } |
| 357 | + unsafe { object.atomic_store::<usize>(value.raw_tagged() as usize, offset as usize) } |
361 | 358 | } |
362 | 359 |
|
363 | 360 | /// Creates the many `{get, put}Ty` and `{get, put}TyVolatile` methods |
@@ -488,18 +485,8 @@ pub fn copyMemory0( |
488 | 485 | let src_base = src_base.extract_primitive_array(); |
489 | 486 | let dest_base = dest_base.extract_primitive_array(); |
490 | 487 |
|
491 | | - let src_base_element_size = src_base.scale(); |
492 | | - let dest_base_element_size = dest_base.scale(); |
493 | | - |
494 | | - let src_base_offset = (src_offset as usize) * src_base_element_size; |
495 | | - let dest_base_offset = (dest_offset as usize) * dest_base_element_size; |
496 | | - |
497 | | - unsafe { |
498 | | - let src_base_ptr = src_base.field_base().add(src_base_offset); |
499 | | - let dest_base_ptr = dest_base.field_base().add(dest_base_offset); |
500 | | - src_base_ptr.copy_to(dest_base_ptr, size * src_base_element_size); |
501 | | - return; |
502 | | - } |
| 488 | + unsafe { src_base.copy_into(src_offset as usize, &dest_base, dest_offset as usize, size) } |
| 489 | + return; |
503 | 490 | } |
504 | 491 |
|
505 | 492 | todo!() |
|
0 commit comments