< prev index next >
src/java.base/share/classes/java/lang/constant/AsTypeMethodHandleDesc.java
Print this page
rev 52749 : Bootstrap method consolidation
* clean up and simplify JDK support code for BSM invocation
* simplify JVM bootstrap handshake: use BootstrapCallInfo only
* remove unused JVM paths and data fields
* move bootstrap argument processing from MethodHandleNatives to ConstantPool
* remove ConstantGroup; merge argument access into BootstrapCallInfo
* adjust BSM argument access: remove copyArguments, add argumentRef API
* add metadata-free BSM modes, including symbolic arguments from CP
@@ -27,11 +27,10 @@
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Optional;
-import static java.lang.constant.ConstantDescs.BSM_INVOKE;
import static java.lang.constant.ConstantDescs.CR_MethodHandle;
import static java.util.Objects.requireNonNull;
/**
* A <a href="package-summary.html#nominal">nominal descriptor</a> for a
@@ -43,12 +42,12 @@
private final MethodHandleDesc underlying;
private final MethodTypeDesc type;
AsTypeMethodHandleDesc(MethodHandleDesc underlying, MethodTypeDesc type) {
- super(BSM_INVOKE, ConstantDescs.DEFAULT_NAME, CR_MethodHandle,
- ConstantDescs.MHR_METHODHANDLE_ASTYPE, underlying, type);
+ super(ConstantDescs.MHR_METHODHANDLE_ASTYPE, ConstantDescs.INVOKE_NAME, CR_MethodHandle,
+ underlying, type);
this.underlying = requireNonNull(underlying);
this.type = requireNonNull(type);
}
@Override
@@ -64,12 +63,12 @@
return handle.asType(methodType);
}
@Override
public Optional<? extends ConstantDesc<ConstantDesc<MethodHandle>>> describeConstable() {
- return ConstantUtils.symbolizeHelper(ConstantDescs.MHR_METHODHANDLEDESC_ASTYPE, ConstantDescs.CR_MethodHandleDesc,
- underlying, type);
+ DirectMethodHandleDesc bootstrap = ConstantDescs.MHR_METHODHANDLEDESC_ASTYPE;
+ return Optional.of(DynamicConstantDesc.ofSymbolicExpression(bootstrap, underlying, type));
}
@Override
public String toString() {
return String.format("%s.asType%s", underlying.toString(), type.displayDescriptor());
< prev index next >