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