hotspot/src/share/vm/prims/unsafe.cpp
changeset 22868 7f6eb436873b
parent 20282 7f9cbdf89af2
child 22881 b16d7faa638d
equal deleted inserted replaced
22867:309bcf262a19 22868:7f6eb436873b
   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);