< prev index next >

src/java.base/share/classes/java/lang/invoke/Invokers.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -303,13 +303,11 @@
     }
 
     /** Static definition of MethodHandle.invokeExact checking code. */
     /*non-public*/ static
     @ForceInline
-    void checkExactType(Object mhObj, Object expectedObj) {
-        MethodHandle mh = (MethodHandle) mhObj;
-        MethodType expected = (MethodType) expectedObj;
+    void checkExactType(MethodHandle mh, MethodType expected) {
         MethodType actual = mh.type();
         if (actual != expected)
             throw newWrongMethodTypeException(expected, actual);
     }
 

@@ -317,13 +315,11 @@
      * Directly returns the type-adjusted MH to invoke, as follows:
      * {@code (R)MH.invoke(a*) => MH.asType(TYPEOF(a*:R)).invokeBasic(a*)}
      */
     /*non-public*/ static
     @ForceInline
-    Object checkGenericType(Object mhObj, Object expectedObj) {
-        MethodHandle mh = (MethodHandle) mhObj;
-        MethodType expected = (MethodType) expectedObj;
+    MethodHandle checkGenericType(MethodHandle mh,  MethodType expected) {
         return mh.asType(expected);
         /* Maybe add more paths here.  Possible optimizations:
          * for (R)MH.invoke(a*),
          * let MT0 = TYPEOF(a*:R), MT1 = MH.type
          *

@@ -388,18 +384,17 @@
     }
 
     /** Static definition of MethodHandle.invokeGeneric checking code. */
     /*non-public*/ static
     @ForceInline
-    Object getCallSiteTarget(Object site) {
-        return ((CallSite)site).getTarget();
+    MethodHandle getCallSiteTarget(CallSite site) {
+        return site.getTarget();
     }
 
     /*non-public*/ static
     @ForceInline
-    void checkCustomized(Object o) {
-        MethodHandle mh = (MethodHandle)o;
+    void checkCustomized(MethodHandle mh) {
         if (MethodHandleImpl.isCompileConstant(mh)) return;
         if (mh.form.customized == null) {
             maybeCustomize(mh);
         }
     }

@@ -423,17 +418,17 @@
         NF_checkCustomized;
     static {
         try {
             NamedFunction nfs[] = {
                 NF_checkExactType = new NamedFunction(Invokers.class
-                        .getDeclaredMethod("checkExactType", Object.class, Object.class)),
+                        .getDeclaredMethod("checkExactType", MethodHandle.class,  MethodType.class)),
                 NF_checkGenericType = new NamedFunction(Invokers.class
-                        .getDeclaredMethod("checkGenericType", Object.class, Object.class)),
+                        .getDeclaredMethod("checkGenericType", MethodHandle.class,  MethodType.class)),
                 NF_getCallSiteTarget = new NamedFunction(Invokers.class
-                        .getDeclaredMethod("getCallSiteTarget", Object.class)),
+                        .getDeclaredMethod("getCallSiteTarget", CallSite.class)),
                 NF_checkCustomized = new NamedFunction(Invokers.class
-                        .getDeclaredMethod("checkCustomized", Object.class))
+                        .getDeclaredMethod("checkCustomized", MethodHandle.class))
             };
             // Each nf must be statically invocable or we get tied up in our bootstraps.
             assert(InvokerBytecodeGenerator.isStaticallyInvocable(nfs));
         } catch (ReflectiveOperationException ex) {
             throw newInternalError(ex);
< prev index next >