[9, 8u40] RFR (XXS): 8066746: MHs.explicitCastArguments does incorrect type checks for VarargsCollector

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Mon Dec 8 23:47:34 UTC 2014


http://cr.openjdk.java.net/~vlivanov/8066746/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8066746

Recent changes (8057656 [1]) broke MHs.explicitCastArguments for 
VarargsCollector case. It introduced an equivalence check between 
MHs.explicitCastArguments and MethodHandle.asType() which doesn't work 
for VarargsCollector case as expected.

VarargsCollector has special asType() implementation, which supports 
collecting any number of trailing positional arguments into an array 
argument. It doesn't play well with MHs.explicitCastArguments, because 
the latter is meant to be a pairwise argument and return type conversion.

The fix is to ensure that adapted method handle has fixed arity.

Testing: regression test, jck (api/java_lang/invoke), jdk/java/lang/invoke

Thanks!

Best regards,
Vladimir Ivanov

[1] https://bugs.openjdk.java.net/browse/JDK-8057656


More information about the mlvm-dev mailing list