VarHandle desugar: Add support for getVolatile

Bug: b/247076137
Change-Id: I57d19949199a3d07189ef8a2e6d8143eea826ed9
diff --git a/src/test/examplesJava9/varhandle/InstanceLongField.java b/src/test/examplesJava9/varhandle/InstanceLongField.java
index b23e692..484ed87 100644
--- a/src/test/examplesJava9/varhandle/InstanceLongField.java
+++ b/src/test/examplesJava9/varhandle/InstanceLongField.java
@@ -67,6 +67,55 @@
     }
   }
 
+  public static void testGetVolatile(VarHandle varHandle) {
+    System.out.println("testGetVolatile");
+
+    InstanceLongField instance = new InstanceLongField();
+    varHandle.set(instance, 1);
+
+    System.out.println(varHandle.getVolatile(instance));
+    System.out.println((Object) varHandle.getVolatile(instance));
+    System.out.println((long) varHandle.getVolatile(instance));
+    System.out.println((float) varHandle.getVolatile(instance));
+    System.out.println((double) varHandle.getVolatile(instance));
+    try {
+      System.out.println((boolean) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+    try {
+      System.out.println((byte) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+    try {
+      System.out.println((short) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+    try {
+      System.out.println((char) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+    try {
+      System.out.println((int) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+    try {
+      System.out.println((String) varHandle.getVolatile(instance));
+      System.out.println("Unexpected success");
+    } catch (RuntimeException e) {
+      checkJavaLangInvokeWrongMethodTypeException(e);
+    }
+  }
+
   public static void testSet(VarHandle varHandle) {
     System.out.println("testSet");
 
@@ -237,6 +286,7 @@
     VarHandle varHandle =
         MethodHandles.lookup().findVarHandle(InstanceLongField.class, "field", long.class);
     testGet(varHandle);
+    testGetVolatile(varHandle);
     testSet(varHandle);
     testCompareAndSet(varHandle);
   }