RFR (XS): 8224110 [lworld] Reflective method invocation fails with assert: "illegal type"

Roger Riggs roger.riggs at oracle.com
Wed Jun 12 19:26:22 UTC 2019

Hi David,

Is that unique to j.l.invoke?
There are plenty uses of varargs where the arguments
are the same type. <T> List.of(<T>... strings), for example.
There is the ambiguity for a single argument that the compiler warns about
as in the example that developers have to deal with.

We should avoid exceptions, they require more specification (and warts)
than being able to just use the whole spec.
Getting arguments to this kind of method or constructor efficiently is 

$.02, Roger

On 6/12/19 12:53 PM, 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:
>> Hi,
>> 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:
>>> Greetings,
>>> 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[0] 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 mailing list