src/share/vm/prims/unsafe.cpp

Print this page
rev 5728 : 8029101: PPC64 (part 211): ordering of Independent Reads of Independent Writes
Contributed-by: mdoerr

*** 158,169 **** --- 158,172 ---- #define SET_FIELD(obj, offset, type_name, x) \ oop p = JNIHandles::resolve(obj); \ *(type_name*)index_oop_from_field_offset_long(p, offset) = x + // Support ordering of "Independent Reads of Independent Writes" (see Parse::do_get_xxx). + // Solution: implement volatile read as fence-load-acquire. #define GET_FIELD_VOLATILE(obj, offset, type_name, v) \ oop p = JNIHandles::resolve(obj); \ + PPC64_ONLY(OrderAccess::fence();) \ volatile type_name v = OrderAccess::load_acquire((volatile type_name*)index_oop_from_field_offset_long(p, offset)); #define SET_FIELD_VOLATILE(obj, offset, type_name, x) \ oop p = JNIHandles::resolve(obj); \ OrderAccess::release_store_fence((volatile type_name*)index_oop_from_field_offset_long(p, offset), x);