< 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 >