Mercurial > hg > graal-jvmci-8
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 |