< prev index next >

src/java.base/share/classes/java/lang/invoke/CallSite.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

@@ -195,11 +195,11 @@
         MethodType newType = newTarget.type();  // null check!
         if (!newType.equals(oldType))
             throw wrongTargetType(newTarget, oldType);
     }
 
-    private static WrongMethodTypeException wrongTargetType(MethodHandle target, MethodType type) {
+    static WrongMethodTypeException wrongTargetType(Object target, MethodType type) {
         return new WrongMethodTypeException(String.valueOf(target)+" should be of type "+type);
     }
 
     /**
      * Produces a method handle equivalent to an invokedynamic instruction

@@ -291,50 +291,6 @@
     }
     /*package-private*/
     void setTargetVolatile(MethodHandle newTarget) {
         MethodHandleNatives.setCallSiteTargetVolatile(this, newTarget);
     }
-
-    // this implements the upcall from the JVM, MethodHandleNatives.linkCallSite:
-    static CallSite makeSite(MethodHandle bootstrapMethod,
-                             // Callee information:
-                             String name, MethodType type,
-                             // Extra arguments for BSM, if any:
-                             Object info,
-                             // Caller information:
-                             Class<?> callerClass) {
-        CallSite site;
-        try {
-            Object binding = BootstrapMethodInvoker.invoke(
-                    CallSite.class, bootstrapMethod, name, type, info, callerClass);
-            if (binding instanceof CallSite) {
-                site = (CallSite) binding;
-            } else {
-                // See the "Linking Exceptions" section for the invokedynamic
-                // instruction in JVMS 6.5.
-                // Throws a runtime exception defining the cause that is then
-                // in the "catch (Throwable ex)" a few lines below wrapped in
-                // BootstrapMethodError
-                throw new ClassCastException("CallSite bootstrap method failed to produce an instance of CallSite");
-            }
-            if (!site.getTarget().type().equals(type)) {
-                // See the "Linking Exceptions" section for the invokedynamic
-                // instruction in JVMS 6.5.
-                // Throws a runtime exception defining the cause that is then
-                // in the "catch (Throwable ex)" a few lines below wrapped in
-                // BootstrapMethodError
-                throw wrongTargetType(site.getTarget(), type);
-            }
-        } catch (Error e) {
-            // Pass through an Error, including BootstrapMethodError, any other
-            // form of linkage error, such as IllegalAccessError if the bootstrap
-            // method is inaccessible, or say ThreadDeath/OutOfMemoryError
-            // See the "Linking Exceptions" section for the invokedynamic
-            // instruction in JVMS 6.5.
-            throw e;
-        } catch (Throwable ex) {
-            // Wrap anything else in BootstrapMethodError
-            throw new BootstrapMethodError("CallSite bootstrap method initialization exception", ex);
-        }
-        return site;
-    }
 }
< prev index next >