< prev index next >
jdk/src/java.base/share/classes/jdk/experimental/value/ValueType.java
Print this page
*** 66,75 ****
--- 66,76 ----
}
},
NEWARRAY,
VALOAD,
VASTORE,
+ ARRAYLENGTH,
MULTINEWARRAY() {
@Override
ValueHandleKey key(Object dims) {
return new ValueHandleKey(this, dims);
}
*** 341,350 ****
--- 342,365 ----
handleMap.put(key, result);
}
return result;
}
+ public MethodHandle arrayLength() {
+ Class<?> arrayValueClass = arrayValueClass();
+ ValueHandleKey key = ValueHandleKind.ARRAYLENGTH.key();
+ MethodHandle result = handleMap.get(key);
+ if (result == null) {
+ result = MethodHandleBuilder.loadCode(boxLookup, mhName("arrayLength"), MethodType.methodType(int.class, arrayValueClass),
+ C -> {
+ C.load(0).arraylength().ireturn();
+ });
+ handleMap.put(key, result);
+ }
+ return result;
+ }
+
public MethodHandle arraySetter() {
Class<?> arrayValueClass = arrayValueClass();
ValueHandleKey key = ValueHandleKind.VASTORE.key();
MethodHandle result = handleMap.get(key);
if (result == null) {
< prev index next >