< prev index next >

src/java.base/share/classes/java/lang/invoke/VarHandles.java

Print this page

        

@@ -160,11 +160,13 @@
         int aoffset = UNSAFE.arrayBaseOffset(arrayClass);
         int ascale = UNSAFE.arrayIndexScale(arrayClass);
         int ashift = 31 - Integer.numberOfLeadingZeros(ascale);
 
         if (!componentType.isPrimitive()) {
-            return new VarHandleObjects.Array(aoffset, ashift, arrayClass);
+            return componentType.isValue()
+                ? new VarHandleObjects.ValueArray(aoffset, ashift, arrayClass)
+                : new VarHandleObjects.Array(aoffset, ashift, arrayClass);
         }
         else if (componentType == boolean.class) {
             return new VarHandleBooleans.Array(aoffset, ashift);
         }
         else if (componentType == byte.class) {
< prev index next >