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