Quick comment. In this: > MethodHandle h0= constant(boolean.class, true);
…there should a space between h0 and =. > On Apr 13, 2016, at 5:12 AM, shilpi.rast...@oracle.com wrote: > > Thank You Paul for the suggestions. > > Please review the updated webrev > http://cr.openjdk.java.net/~srastogi/8150829/webrev.05 > <http://cr.openjdk.java.net/~srastogi/8150829/webrev.05> > > Thanks, > Shilpi > > On 4/12/2016 7:32 PM, Paul Sandoz wrote: >> Hi, >> >> Just minor comments, below. >> >> Paul. >> >> >> MethodHandle >> — >> >> 972 /** >> 973 * Adapts this method handle to be {@linkplain #asVarargsCollector >> variable arity} >> 974 * if the boolean flag is true, else {@linkplain #asFixedArity >> fixed arity}. >> 975 * If the method handle is already of the proper arity mode, it is >> returned >> 976 * unchanged. >> 977 * <p>This method is sometimes useful when adapting a method >> handle that >> 978 * may be variable arity, to ensure that the resulting adapter is >> also >> 979 * variable arity if and only if the original handle was. For >> example, >> 980 * this code changes the first argument of a handle >> >> , {@code mh}, >> >> to {@code int} without >> 981 * disturbing its variable arity property: >> 982 * {@code >> mh.asType(mh.type().changeParameterType(0,int.class)).withVarargs(mh.isVarargsCollector())} >> >> The above paragraph can be an @apiNote. >> >> Also can you format the code block over two lines to emphasise the last >> call., otherwise i think it is harder to read. >> >> >> 983 * @param makeVarargs true if the return method handle should have >> variable arity behavior >> 984 * @return a method handle of the same type, with possibly >> adjusted variable arity behavior >> 985 * @throws IllegalArgumentException if {@code makeVarargs} is true >> and >> 986 * this method handle does not have a trailing array >> parameter >> 987 * @since 9 >> >> Add >> >> @see #asVarargsCollector >> @see #asFixedArity >> >> ? >> >> 988 */ >> 989 public MethodHandle withVarargs(boolean makeVarargs) { >> >> >> >> MethodHandles >> — >> >> 2387 /** Produces a constant method handle of the requested return type >> which >> >> new line after ‘/**' >> >> >> 2388 * returns the default value for that type every time it is invoked. >> 2389 * The resulting constant method handle will have no side effects. >> 2390 * <p>The returned method handle is equivalent to {@code >> empty(methodType(type))}. >> 2391 * It is also equivalent to {@code >> explicitCastArguments(constant(Object.class, null), methodType(type))}, >> 2392 * since {@code explicitCastArguments} converts {@code null} to >> default values. >> >> Is this method more efficient than the other two? > It is existing method made it public and renamed it to zero from zeroHandle. >> >> >> 2393 * @param type the expected return type of the desired method handle >> 2394 * @return a constant method handle that takes no arguments and >> returns the default value of the given type (or void, if the type is void) >> >> Can you format to be a little more consistent and not so long on the line >> length, as it becomes really tricky read. >> >> >> 2395 * @throws NullPointerException if the argument is null >> 2396 * @see MethodHandles#constant >> 2397 * @see MethodHandles#empty >> 2398 * @since 9 >> 2399 */ >> 2400 public static MethodHandle zero(Class<?> type) { >> 2401 Objects.requireNonNull(type); >> 2402 return type.isPrimitive() ? >> zero(Wrapper.forPrimitiveType(type), type) : zero(Wrapper.OBJECT, type); >> 2403 } >> 2404 >> >> >> 2409 /** >> 2410 * Produces a method handle of the requested type which ignores any >> arguments, does nothing, >> 2411 * and returns a suitable default depending on the return type. >> 2412 * That is, it returns a zero primitive value, a {@code null}, or >> {@code void}. >> 2413 * <p>The returned method handle is equivalent to >> 2414 * {@code dropArguments(zero(type.returnType()), 0, >> type.parameterList())}. >> 2415 * <p> >> 2416 * Example: Given a predicate and target, a useful "if-then" >> construct can be constructed as >> >> s/Example:/@apiNote (same applies to the method dropArgumentsToMatch) >> >> s/constructed/produced >> >> >> 2417 * {@code guardWithTest(pred, target, empty(target.type())}. >> 2418 * @param type the type of the desired method handle >> 2419 * @return a constant method handle of the given type, which >> returns a default value of the given return type >> 2420 * @throws NullPointerException if the argument is null >> 2421 * @see MethodHandles#zero >> 2422 * @see MethodHandles#constant >> 2423 * @since 9 >> 2424 */ >> 2425 public static MethodHandle empty(MethodType type) { >> >> >> 2726 MethodHandle h0= constant(boolean.class, true); >> >> Space before '=' >> >> >> ConstantIdentityMHTest >> — >> >> You should test the signatures and values for all primitives, ref and void. >> >> >> >> >>> On 11 Apr 2016, at 07:47, shilpi.rast...@oracle.com >>> <mailto:shilpi.rast...@oracle.com> wrote: >>> >>> Gentle Reminder! >>> >>> -------- Forwarded Message -------- >>> Subject: RFR [9] 8150829: Enhanced drop-args, identity and default >>> constant, varargs adjustment >>> Date: Thu, 24 Mar 2016 11:18:56 +0530 >>> From: shilpi.rast...@oracle.com <mailto:shilpi.rast...@oracle.com> >>> <shilpi.rast...@oracle.com> <mailto:shilpi.rast...@oracle.com> >>> Reply-To: core-libs-...@openjdk.java.net >>> <mailto:core-libs-...@openjdk.java.net> >>> To: mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >>> >>> Hi All, >>> >>> Please review the following- >>> >>> >>> https://bugs.openjdk.java.net/browse/JDK-8150829 >>> <https://bugs.openjdk.java.net/browse/JDK-8150829> >>> http://cr.openjdk.java.net/~srastogi/8150829/webrev.04 >>> <http://cr.openjdk.java.net/~srastogi/8150829/webrev.04> >>> >>> >>> >>> Thanks, >>> Shilpi >>> >>> >>> >>> _______________________________________________ >>> mlvm-dev mailing list >>> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >>> <http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev> >> >> >> _______________________________________________ >> mlvm-dev mailing list >> mlvm-dev@openjdk.java.net <mailto:mlvm-dev@openjdk.java.net> >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >> <http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev> > > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
_______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev