src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File jdk Sdiff src/java.base/share/classes/java/lang/invoke

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

Print this page
rev 11254 : 8063137: Never-taken branches should be pruned when GWT LambdaForms are shared
Reviewed-by: ?
rev 11255 : [mq]: gwt.profile.1
rev 11256 : imported patch dont_inline.0
rev 11257 : [mq]: block.as_type
rev 11258 : 8069591: Customize LambdaForms which are invoked using MH.invoke/invokeExact
Reviewed-by: ?


1647         } else {
1648             Class<? extends Object[]> objArrayType = arrayType.asSubclass(Object[].class);
1649             Object[] example = Arrays.copyOf(NO_ARGS_ARRAY, 0, objArrayType);
1650             MethodHandle builder = Lazy.MH_fillNewTypedArray.bindTo(example);
1651             MethodHandle producer = Lazy.MH_arrayIdentity; // must be weakly typed
1652             mh = buildVarargsArray(builder, producer, nargs);
1653         }
1654         mh = mh.asType(MethodType.methodType(arrayType, Collections.<Class<?>>nCopies(nargs, elemType)));
1655         mh = makeIntrinsic(mh, Intrinsic.NEW_ARRAY);
1656         assert(assertCorrectArity(mh, nargs));
1657         if (nargs < cache.length)
1658             cache[nargs] = mh;
1659         return mh;
1660     }
1661 
1662     private static MethodHandle buildArrayProducer(Class<?> arrayType) {
1663         Class<?> elemType = arrayType.getComponentType();
1664         assert(elemType.isPrimitive());
1665         return Lazy.MH_copyAsPrimitiveArray.bindTo(Wrapper.forPrimitiveType(elemType));
1666     }









1667 }


1647         } else {
1648             Class<? extends Object[]> objArrayType = arrayType.asSubclass(Object[].class);
1649             Object[] example = Arrays.copyOf(NO_ARGS_ARRAY, 0, objArrayType);
1650             MethodHandle builder = Lazy.MH_fillNewTypedArray.bindTo(example);
1651             MethodHandle producer = Lazy.MH_arrayIdentity; // must be weakly typed
1652             mh = buildVarargsArray(builder, producer, nargs);
1653         }
1654         mh = mh.asType(MethodType.methodType(arrayType, Collections.<Class<?>>nCopies(nargs, elemType)));
1655         mh = makeIntrinsic(mh, Intrinsic.NEW_ARRAY);
1656         assert(assertCorrectArity(mh, nargs));
1657         if (nargs < cache.length)
1658             cache[nargs] = mh;
1659         return mh;
1660     }
1661 
1662     private static MethodHandle buildArrayProducer(Class<?> arrayType) {
1663         Class<?> elemType = arrayType.getComponentType();
1664         assert(elemType.isPrimitive());
1665         return Lazy.MH_copyAsPrimitiveArray.bindTo(Wrapper.forPrimitiveType(elemType));
1666     }
1667 
1668     /*non-public*/ static void assertSame(Object mh1, Object mh2) {
1669         if (mh1 != mh2) {
1670             String msg = String.format("mh1 != mh2: mh1 = %s (form: %s); mh2 = %s (form: %s)",
1671                     mh1, ((MethodHandle)mh1).form,
1672                     mh2, ((MethodHandle)mh2).form);
1673             throw newInternalError(msg);
1674         }
1675     }
1676 }
src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File