161 UNSAFE.putOrderedLong(base, offset, 1L); |
161 UNSAFE.putOrderedLong(base, offset, 1L); |
162 long x = UNSAFE.getLongVolatile(base, offset); |
162 long x = UNSAFE.getLongVolatile(base, offset); |
163 assertEquals(x, 1L, "putRelease long value"); |
163 assertEquals(x, 1L, "putRelease long value"); |
164 } |
164 } |
165 |
165 |
|
166 // Lazy |
|
167 { |
|
168 UNSAFE.putLongRelease(base, offset, 1L); |
|
169 long x = UNSAFE.getLongAcquire(base, offset); |
|
170 assertEquals(x, 1L, "putRelease long value"); |
|
171 } |
|
172 |
|
173 // Opaque |
|
174 { |
|
175 UNSAFE.putLongOpaque(base, offset, 2L); |
|
176 long x = UNSAFE.getLongOpaque(base, offset); |
|
177 assertEquals(x, 2L, "putOpaque long value"); |
|
178 } |
|
179 |
166 // Unaligned |
180 // Unaligned |
167 { |
181 { |
168 UNSAFE.putLongUnaligned(base, offset, 2L); |
182 UNSAFE.putLongUnaligned(base, offset, 2L); |
169 long x = UNSAFE.getLongUnaligned(base, offset); |
183 long x = UNSAFE.getLongUnaligned(base, offset); |
170 assertEquals(x, 2L, "putUnaligned long value"); |
184 assertEquals(x, 2L, "putUnaligned long value"); |
197 assertEquals(r, false, "failing compareAndSwap long"); |
211 assertEquals(r, false, "failing compareAndSwap long"); |
198 long x = UNSAFE.getLong(base, offset); |
212 long x = UNSAFE.getLong(base, offset); |
199 assertEquals(x, 2L, "failing compareAndSwap long value"); |
213 assertEquals(x, 2L, "failing compareAndSwap long value"); |
200 } |
214 } |
201 |
215 |
|
216 // Advanced compare |
|
217 { |
|
218 long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 2L, 1L); |
|
219 assertEquals(r, 2L, "success compareAndExchangeVolatile long"); |
|
220 long x = UNSAFE.getLong(base, offset); |
|
221 assertEquals(x, 1L, "success compareAndExchangeVolatile long value"); |
|
222 } |
|
223 |
|
224 { |
|
225 long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 2L, 3L); |
|
226 assertEquals(r, 1L, "failing compareAndExchangeVolatile long"); |
|
227 long x = UNSAFE.getLong(base, offset); |
|
228 assertEquals(x, 1L, "failing compareAndExchangeVolatile long value"); |
|
229 } |
|
230 |
|
231 { |
|
232 long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 1L, 2L); |
|
233 assertEquals(r, 1L, "success compareAndExchangeAcquire long"); |
|
234 long x = UNSAFE.getLong(base, offset); |
|
235 assertEquals(x, 2L, "success compareAndExchangeAcquire long value"); |
|
236 } |
|
237 |
|
238 { |
|
239 long r = UNSAFE.compareAndExchangeLongAcquire(base, offset, 1L, 3L); |
|
240 assertEquals(r, 2L, "failing compareAndExchangeAcquire long"); |
|
241 long x = UNSAFE.getLong(base, offset); |
|
242 assertEquals(x, 2L, "failing compareAndExchangeAcquire long value"); |
|
243 } |
|
244 |
|
245 { |
|
246 long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 2L, 1L); |
|
247 assertEquals(r, 2L, "success compareAndExchangeRelease long"); |
|
248 long x = UNSAFE.getLong(base, offset); |
|
249 assertEquals(x, 1L, "success compareAndExchangeRelease long value"); |
|
250 } |
|
251 |
|
252 { |
|
253 long r = UNSAFE.compareAndExchangeLongRelease(base, offset, 2L, 3L); |
|
254 assertEquals(r, 1L, "failing compareAndExchangeRelease long"); |
|
255 long x = UNSAFE.getLong(base, offset); |
|
256 assertEquals(x, 1L, "failing compareAndExchangeRelease long value"); |
|
257 } |
|
258 |
|
259 { |
|
260 boolean r = UNSAFE.weakCompareAndSwapLong(base, offset, 1L, 2L); |
|
261 assertEquals(r, true, "weakCompareAndSwap long"); |
|
262 long x = UNSAFE.getLong(base, offset); |
|
263 assertEquals(x, 2L, "weakCompareAndSwap long value"); |
|
264 } |
|
265 |
|
266 { |
|
267 boolean r = UNSAFE.weakCompareAndSwapLongAcquire(base, offset, 2L, 1L); |
|
268 assertEquals(r, true, "weakCompareAndSwapAcquire long"); |
|
269 long x = UNSAFE.getLong(base, offset); |
|
270 assertEquals(x, 1L, "weakCompareAndSwapAcquire long"); |
|
271 } |
|
272 |
|
273 { |
|
274 boolean r = UNSAFE.weakCompareAndSwapLongRelease(base, offset, 1L, 2L); |
|
275 assertEquals(r, true, "weakCompareAndSwapRelease long"); |
|
276 long x = UNSAFE.getLong(base, offset); |
|
277 assertEquals(x, 2L, "weakCompareAndSwapRelease long"); |
|
278 } |
|
279 |
202 // Compare set and get |
280 // Compare set and get |
203 { |
281 { |
204 long o = UNSAFE.getAndSetLong(base, offset, 1L); |
282 long o = UNSAFE.getAndSetLong(base, offset, 1L); |
205 assertEquals(o, 2L, "getAndSet long"); |
283 assertEquals(o, 2L, "getAndSet long"); |
206 long x = UNSAFE.getLong(base, offset); |
284 long x = UNSAFE.getLong(base, offset); |