comparison src/share/vm/runtime/orderAccess.hpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents 63a4eb8bcd23
children
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
59 // 59 //
60 // LoadStore: Load1(s); LoadStore; Store2 60 // LoadStore: Load1(s); LoadStore; Store2
61 // 61 //
62 // Ensures that Load1 completes before Store2 and any subsequent store 62 // Ensures that Load1 completes before Store2 and any subsequent store
63 // operations. Loads before Load1 may *not* float below Store2 and any 63 // operations. Loads before Load1 may *not* float below Store2 and any
64 // subsequent store operations. 64 // subseqeuent store operations.
65 // 65 //
66 // StoreLoad: Store1(s); StoreLoad; Load2 66 // StoreLoad: Store1(s); StoreLoad; Load2
67 // 67 //
68 // Ensures that Store1 completes before Load2 and any subsequent load 68 // Ensures that Store1 completes before Load2 and any subsequent load
69 // operations. Stores before Store1 may *not* float below Load2 and any 69 // operations. Stores before Store1 may *not* float below Load2 and any
70 // subsequent load operations. 70 // subseqeuent load operations.
71 // 71 //
72 // 72 //
73 // We define two further operations, 'release' and 'acquire'. They are 73 // We define two further operations, 'release' and 'acquire'. They are
74 // mirror images of each other. 74 // mirror images of each other.
75 // 75 //
174 // Note: as of 6973570, we have replaced the originally static "dummy" field 174 // Note: as of 6973570, we have replaced the originally static "dummy" field
175 // (see above) by a volatile store to the stack. All of the versions of the 175 // (see above) by a volatile store to the stack. All of the versions of the
176 // compilers that we currently use (SunStudio, gcc and VC++) respect the 176 // compilers that we currently use (SunStudio, gcc and VC++) respect the
177 // semantics of volatile here. If you build HotSpot using other 177 // semantics of volatile here. If you build HotSpot using other
178 // compilers, you may need to verify that no compiler reordering occurs 178 // compilers, you may need to verify that no compiler reordering occurs
179 // across the sequence point represented by the volatile access. 179 // across the sequence point respresented by the volatile access.
180 // 180 //
181 // 181 //
182 // os::is_MP Considered Redundant 182 // os::is_MP Considered Redundant
183 // 183 //
184 // Callers of this interface do not need to test os::is_MP() before 184 // Callers of this interface do not need to test os::is_MP() before
309 static void release_store_ptr_fence(volatile void* p, void* v); 309 static void release_store_ptr_fence(volatile void* p, void* v);
310 310
311 private: 311 private:
312 // This is a helper that invokes the StubRoutines::fence_entry() 312 // This is a helper that invokes the StubRoutines::fence_entry()
313 // routine if it exists, It should only be used by platforms that 313 // routine if it exists, It should only be used by platforms that
314 // don't have another way to do the inline assembly. 314 // don't another way to do the inline eassembly.
315 static void StubRoutines_fence(); 315 static void StubRoutines_fence();
316 }; 316 };
317 317
318 #endif // SHARE_VM_RUNTIME_ORDERACCESS_HPP 318 #endif // SHARE_VM_RUNTIME_ORDERACCESS_HPP