RFR (S) JDK-8223017: [lworld] checkcast/instance broken for LW2 arrays
Frederic Parain
frederic.parain at oracle.com
Thu May 9 14:44:23 UTC 2019
I haven’t tested it, but the code looks good to me.
Fred
> On May 3, 2019, at 10:35, David Simms <david.simms at oracle.com> wrote:
>
>
> Updated webrev: http://cr.openjdk.java.net/~dsimms/valhalla/8223017/
>
> Remove "QDescBit" constant pool tag encoding for arrays of Q, it wasn't required. Since I was there I removed macro and renamed to "JVM_CONSTANT_QDescBit" in-line with the rest of the code...sorry for the extra noise in the patch.
>
> Cheers
> /David Simms
>
>
> On 30/04/19 3:46 PM, David Simms wrote:
>>
>> Nice spotting, I didn't differentiate the "checkcast" behavior for "Q-type descriptors" and "Array Q-type descriptors".
>>
>> Since we are heading into a local holiday (tonight and tomorrow, bonfire night), I'll leave a note on my thinking here if I don't get to it until Thursday...
>>
>> * I probably need to || in another bit for arrays of q-type in the
>> constant pool tag for the difference in behavior. Thinking of
>> using "JVM_CONSTANT_Unicode" since it is unused (further mess,
>> but there are not separate bits left)
>> * anewarray and multianewarray needs something to tell them it's a
>> q-type array, but for the interpreter at least we jump into the
>> VM...so I wonder if we need the constant tag encoding at all
>>
>> Will look a little further into this...
>>
>> Cheers
>>
>> /D
>>
>>
>> On 30/04/19 12:27 PM, Tobias Hartmann wrote:
>>> Hi Mr. Simms,
>>>
>>> I'm seeing the following inconsistent behavior:
>>>
>>> MyValue1?[] va1 = (MyValue1?[])null; // does not throw NPE
>>> MyValue1?[] va2 = null; // does not throw NPE
>>> MyValue1[] va3 = null; // does not throw NPE
>>> MyValue1[] va4 = (MyValue1[])null; // throws NPE
>>>
>>> Thanks,
>>> Tobias
>>>
>>> On 29.04.19 12:01, David Simms wrote:
>>>> Here's a fix for the missing super type relationship for null-free arrays, i.e. "[QFoo;" <:
>>>> "[LFoo;"...once LW2 array support went in, it accidentally skipped it's null-allow type and went
>>>> straight to Object[]...added a few more test cases.
>>>>
>>>> Webrev:
>>>>
>>>> http://cr.openjdk.java.net/~dsimms/valhalla/8223017/
>>>>
>>>> Bug:
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8223017
>>>>
>>
>
More information about the valhalla-dev
mailing list