blob: 06960c4a862d17c36565847a01233b83efc65cd0 [file] [log] [blame]
Søren Gjesse75996df2022-12-12 13:08:20 +01001// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4package varhandle;
5
6import java.lang.invoke.MethodHandles;
7import java.lang.invoke.VarHandle;
8
9public class InstanceFloatField {
10
11 private float field;
12
13 public static void testSet(VarHandle varHandle) {
14 System.out.println("testGet");
15
16 InstanceFloatField instance = new InstanceFloatField();
17 System.out.println(varHandle.get(instance));
18
19 // float and Float values.
20 varHandle.set(instance, 1.0f);
21 System.out.println((float) varHandle.get(instance));
22 varHandle.set(instance, Float.valueOf(2));
23 System.out.println(varHandle.get(instance));
24 }
25
26 public static void testCompareAndSet(VarHandle varHandle) {
27 System.out.println("testCompareAndSet");
28
29 InstanceFloatField instance = new InstanceFloatField();
30
31 // float and Float values.
32 varHandle.compareAndSet(instance, 1.0f, 2.0f);
33 System.out.println((float) varHandle.get(instance));
34 varHandle.compareAndSet(instance, 0.0f, 1.0f);
35 System.out.println((float) varHandle.get(instance));
36 varHandle.compareAndSet(instance, Float.valueOf(1), 2.0f);
37 System.out.println(varHandle.get(instance));
38 varHandle.compareAndSet(instance, 2.0f, Float.valueOf(3f));
39 System.out.println(varHandle.get(instance));
40 varHandle.compareAndSet(instance, Float.valueOf(3), Float.valueOf(4));
41 System.out.println(varHandle.get(instance));
42 }
43
44 public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
45 VarHandle varHandle;
46 try {
47 varHandle =
48 MethodHandles.lookup().findVarHandle(InstanceFloatField.class, "field", float.class);
49 } catch (UnsupportedOperationException e) {
50 System.out.println("Got UnsupportedOperationException");
51 return;
52 }
53
54 testSet(varHandle);
55 testCompareAndSet(varHandle);
56 }
57}