226 assertEquals(r, true, "weakCompareAndSetRelease String"); |
226 assertEquals(r, true, "weakCompareAndSetRelease String"); |
227 String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv); |
227 String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv); |
228 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
228 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
229 } |
229 } |
230 |
230 |
|
231 { |
|
232 boolean r = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_VOLATILE).invokeExact(recv, "bar", "foo"); |
|
233 assertEquals(r, true, "weakCompareAndSetVolatile String"); |
|
234 String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv); |
|
235 assertEquals(x, "foo", "weakCompareAndSetVolatile String value"); |
|
236 } |
|
237 |
231 // Compare set and get |
238 // Compare set and get |
232 { |
239 { |
233 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, "foo"); |
240 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, "bar"); |
234 assertEquals(o, "bar", "getAndSet String"); |
241 assertEquals(o, "foo", "getAndSet String"); |
235 String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv); |
242 String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv); |
236 assertEquals(x, "foo", "getAndSet String value"); |
243 assertEquals(x, "bar", "getAndSet String value"); |
237 } |
244 } |
238 |
245 |
239 } |
246 } |
240 |
247 |
241 static void testInstanceFieldUnsupported(VarHandleTestMethodHandleAccessString recv, Handles hs) throws Throwable { |
248 static void testInstanceFieldUnsupported(VarHandleTestMethodHandleAccessString recv, Handles hs) throws Throwable { |
350 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
357 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
351 assertEquals(x, "foo", "weakCompareAndSetAcquire String"); |
358 assertEquals(x, "foo", "weakCompareAndSetAcquire String"); |
352 } |
359 } |
353 |
360 |
354 { |
361 { |
355 boolean r = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact( "foo", "bar"); |
362 boolean r = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact("foo", "bar"); |
356 assertEquals(r, true, "weakCompareAndSetRelease String"); |
363 assertEquals(r, true, "weakCompareAndSetRelease String"); |
357 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
364 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
358 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
365 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
359 } |
366 } |
360 |
367 |
|
368 { |
|
369 boolean r = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_VOLATILE).invokeExact("bar", "foo"); |
|
370 assertEquals(r, true, "weakCompareAndSetVolatile String"); |
|
371 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
|
372 assertEquals(x, "foo", "weakCompareAndSetVolatile String value"); |
|
373 } |
|
374 |
361 // Compare set and get |
375 // Compare set and get |
362 { |
376 { |
363 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact( "foo"); |
377 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact("bar"); |
364 assertEquals(o, "bar", "getAndSet String"); |
378 assertEquals(o, "foo", "getAndSet String"); |
365 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
379 String x = (String) hs.get(TestAccessMode.GET).invokeExact(); |
366 assertEquals(x, "foo", "getAndSet String value"); |
380 assertEquals(x, "bar", "getAndSet String value"); |
367 } |
381 } |
368 |
382 |
369 } |
383 } |
370 |
384 |
371 static void testStaticFieldUnsupported(Handles hs) throws Throwable { |
385 static void testStaticFieldUnsupported(Handles hs) throws Throwable { |
489 assertEquals(r, true, "weakCompareAndSetRelease String"); |
503 assertEquals(r, true, "weakCompareAndSetRelease String"); |
490 String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i); |
504 String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i); |
491 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
505 assertEquals(x, "bar", "weakCompareAndSetRelease String"); |
492 } |
506 } |
493 |
507 |
|
508 { |
|
509 boolean r = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_VOLATILE).invokeExact(array, i, "bar", "foo"); |
|
510 assertEquals(r, true, "weakCompareAndSetVolatile String"); |
|
511 String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i); |
|
512 assertEquals(x, "foo", "weakCompareAndSetVolatile String value"); |
|
513 } |
|
514 |
494 // Compare set and get |
515 // Compare set and get |
495 { |
516 { |
496 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, "foo"); |
517 String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, "bar"); |
497 assertEquals(o, "bar", "getAndSet String"); |
518 assertEquals(o, "foo", "getAndSet String"); |
498 String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i); |
519 String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i); |
499 assertEquals(x, "foo", "getAndSet String value"); |
520 assertEquals(x, "bar", "getAndSet String value"); |
500 } |
521 } |
501 |
522 |
502 } |
523 } |
503 } |
524 } |
504 |
525 |