Mercurial > hg > truffle
comparison src/share/vm/prims/unsafe.cpp @ 17794:3514ee402842
8029101: PPC64 (part 211): ordering of Independent Reads of Independent Writes
Reviewed-by: dholmes, kvn
Contributed-by: martin.doerr@sap.com
author | goetz |
---|---|
date | Thu, 16 Jan 2014 14:25:51 +0100 |
parents | 190899198332 |
children | 28f281e8de1d 62c54fcc0a35 |
comparison
equal
deleted
inserted
replaced
17793:c668f307a4c0 | 17794:3514ee402842 |
---|---|
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); |