Thank You Paul for the suggestions.
Please review the updated webrev
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 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 <shilpi.rast...@oracle.com>
Reply-To: core-libs-...@openjdk.java.net
To: mlvm-dev@openjdk.java.net
Hi All,
Please review the following-
https://bugs.openjdk.java.net/browse/JDK-8150829
http://cr.openjdk.java.net/~srastogi/8150829/webrev.04
Thanks,
Shilpi
_______________________________________________
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
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev