RFR (XS): 8224110 [lworld] Reflective method invocation fails with assert: "illegal type"
mandy.chung at oracle.com
Wed Jun 12 20:49:57 UTC 2019
I expect "java.lang.IllegalArgumentException: wrong number of arguments"
thrown if MyValue3 is passed to Method::invoke as a varargs (as
a single-element array parameter.
A bug is lying somewhere.  is where IAE is being thrown.
On 6/12/19 9:53 AM, David Simms wrote:
> Updated the bug with comment, I was about say, sure let's use inline
> type array if you want. But the use cases are thin:
> "The more I think about it the less I think we should allow inline
> type array, not useless all the method args the same inline type, ie:
> "test(MyValue3 v1, MyValue3 v2, MyValue3 v3)", then passing MyValue3
> would make sense...but only when all the arg types are the
> same...seems like an edge case"
> All the parameter types have to be the same...is that worth a special
> case ?
> On 12/06/2019 16:52, Roger Riggs wrote:
>> Would this be just a temporary restriction?
>> I could see the benefits of being able to use an inline array class
>> for varargs.
>> ?, Roger
>> On 06/12/2019 09:27 AM, David Simms wrote:
>>> Please review this small fix to prevent "inline type" arrays being
>>> sent directly "JVM_InvokeMethod" and
>>> "JVM_NewInstanceFromConstructor". I don't believe it is the
>>> intention of these methods to receive such a type, in the original
>>> problem, there was a javac warning of passing arg implicitly
>>> converted to args array.
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8224110
>>> Webrev: http://cr.openjdk.java.net/~dsimms/valhalla/8224110/
More information about the valhalla-dev