160 oop p = JNIHandles::resolve(obj); \ |
160 oop p = JNIHandles::resolve(obj); \ |
161 *(type_name*)index_oop_from_field_offset_long(p, offset) = x |
161 *(type_name*)index_oop_from_field_offset_long(p, offset) = x |
162 |
162 |
163 #define GET_FIELD_VOLATILE(obj, offset, type_name, v) \ |
163 #define GET_FIELD_VOLATILE(obj, offset, type_name, v) \ |
164 oop p = JNIHandles::resolve(obj); \ |
164 oop p = JNIHandles::resolve(obj); \ |
|
165 if (support_IRIW_for_not_multiple_copy_atomic_cpu) { \ |
|
166 OrderAccess::fence(); \ |
|
167 } \ |
165 volatile type_name v = OrderAccess::load_acquire((volatile type_name*)index_oop_from_field_offset_long(p, offset)); |
168 volatile type_name v = OrderAccess::load_acquire((volatile type_name*)index_oop_from_field_offset_long(p, offset)); |
166 |
169 |
167 #define SET_FIELD_VOLATILE(obj, offset, type_name, x) \ |
170 #define SET_FIELD_VOLATILE(obj, offset, type_name, x) \ |
168 oop p = JNIHandles::resolve(obj); \ |
171 oop p = JNIHandles::resolve(obj); \ |
169 OrderAccess::release_store_fence((volatile type_name*)index_oop_from_field_offset_long(p, offset), x); |
172 OrderAccess::release_store_fence((volatile type_name*)index_oop_from_field_offset_long(p, offset), x); |