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